Eric,我无法确切说明您为什么会看到这些性能问题;这里没有足够的信息继续下去。但是我可以告诉你,你的堆栈中有很多层,其中许多是相当新的,并且没有处于发布状态。所以我会首先尝试缩小可能的罪魁祸首的名单。
对于初学者,除非您的项目需要 node.js API,否则我会从堆栈中删除 nodyn,因为它可以说是您正在使用的最不成熟的技术。毫无疑问,它确实使使用各种库变得更容易。但我很确定 PEG.js 不需要任何 Node.js API。您可以使用知道如何处理 NPM 模块的单个 JS 文件轻松替换堆栈的整个 nodyn/vertx 部分。
查看https://github.com/nodyn/jvm-npm,您可以将其加载到顶级 .js 文件中,然后可以访问 NPM 包。需要明确的是,这不会引入任何 node.js API,但如果您的项目是纯 JS,那没关系。
load('./jvm-npm.js');
var peg = require('pegjs');
接下来,我将确保您使用的是最新的 dynjs 快照,您可以在此处找到:https ://oss.sonatype.org/content/repositories/snapshots/org/dynjs/dynjs/ 。您没有提及您使用的是什么版本,但 dynjs 正在开发专门处理性能问题的方法。关于当前如何处理字符串存在一些已知的问题。如果您使用的是 0.2.2,您可能会在 0.3.0-SNAPSHOT 版本中找到一些缓解,该版本当前可用并随着每次新提交而更新。
最后,对于可能的修复和核心 dynjs 团队的更多关注时间,创建一个简单的可重现示例,最好的办法是将其提交到https://github.com/dynjs/dynjs/issues。我们通常不会监控 Stack Overflow,因为甚至还没有 1.0 版本(尽管也许我们应该开始......)。我们在#dynjs 和#nodyn 的IRC 上非常活跃,因此您也可以考虑花一些时间与核心团队讨论您所看到的内容。我们是一个非常开放的群体,欢迎来自我们新生用户群的意见!