【发布时间】:2019-01-30 09:42:05
【问题描述】:
我正在开发的应用程序在桌面环境中运行。在后端,它运行 C++。前端是用户可修改的,并用 JavaScript 编写,使用 C++ 中的一些公开的类/函数。
我目前正在尝试确定应用程序是否应该单独运行 v8 以运行 JavaScript 代码,或者是否应该“升级”以使用 NodeJS。升级的好处是可以访问大量的 Node 模块,包括内置的和第三方的供用户依赖。但是,我担心 JavaScript 的性能可能会因为 Node 带来的额外包袱而受到阻碍。
也许在 C++ 后端通过自己的版本实现最常见的 Node 模块并将它们公开给 JS 会更好?或者他们是否会有不相关/没有任何性能差异?
【问题讨论】:
-
Javascript 由 V8 在 Chrome 和 node.js 中运行。目前尚不清楚您认为这些性能下降将来自何处,或者您为什么认为这是值得关注的事情。此外,创建一个运行 V8 的新环境并重新创建一堆 node.js 模块并不是一个微不足道的项目,所以即使你发现 node.js 的某些方面给你带来了问题,我认为你宁愿分叉它和修改而不是从头开始重新创建。
-
@jfriend00 Node 是否还包含大量其他特性和功能,例如 libuv、require、额外库等? JavaScript 不只是直接进入 v8。
-
好吧,一旦 Javascript 执行,它只是 V8 执行它。 libuv 是一个跨平台库,允许设计适用于多个操作系统的功能。它不会在实际执行 Javascript 指令时发挥作用。它确实有助于实现计时器、事件循环、文件系统访问等......,您可能需要所有这些。但是,仅仅因为一个平台有很多特性并不能说明它在运行 Javascript 时的表现。它们在很大程度上是两个独立的东西。
-
例如,将
fs模块添加到环境中与Javascript 循环的执行速度没有任何关系。您没有说明您关注的确切性能,因此我们无法更具体地发表评论。在这种情况下,作为一个词的“性能”是一个非常宽泛的词。 -
好吧,我明白了!感谢您的解释,对于所提供问题的含糊之处,我深表歉意。在这种情况下,我将使用 Node 进行开发。
标签: c++ node.js embed v8 embedded-v8