【发布时间】:2014-06-15 02:22:12
【问题描述】:
我有一个 pegjs 生成的解析器,它正在解析一个 29kb 大小的灰尘模板。我正在尝试使用 nodyn 对此模板执行解析,而 nodyn 又位于 dynjs 上,而 dynjs 又位于 vertx 上,并且位于 JVM 上。
在节点上执行解析时,它会在几毫秒(~200 毫秒)内执行。但是,当我在 nodyn/dynjs/vertx/jvm 堆栈上运行解析时,我的性能在每个字符 800 毫秒之间~!
有问题的函数似乎是 charCodeAt 函数调用以及 substr 调用。生成的解析器对这两个方法进行大量调用,每个方法最多可能需要(并不总是一致)100 ms 才能执行。
谁能解释为什么会这样?更好的是,谁能提供解决方案?
谢谢~!
【问题讨论】:
-
你是不是真的说一个电话到
charCodeAt或substr需要100毫秒?如果不是,请澄清您的问题。 -
是的,我实际上是这么说的。这有点疯狂。
-
你如何测试它。可能是由于 JVM 上的冷启动。尝试重复测试 10,000 次,然后取平均值。
-
记录。我认为这可能是 jvm 也正在热身,所以我让它运行一段时间,然后再确定数字
标签: java javascript node.js vert.x