【发布时间】:2018-08-26 12:44:15
【问题描述】:
我希望开发一个使用 C++ 作为渲染/更新/碰撞等后端的 JavaScript 游戏引擎。几乎所有繁重的工作。
然后将通过修改 isolate 变量(或者可能只是一个本机 nodejs 模块)公开 C++ 类/函数。其中一些类,如Sprite 类,可以使其update 函数被JS 子类覆盖,以允许用户自定义行为。
最后,游戏引擎将在 JavaScript 中循环运行,但每一帧都会调用 C++ 上下文以更新/渲染和所有内容,此外还会有大量调用来检查输入、碰撞等. 更不用说每个子类会对用 C++ 编写的父类进行的所有回调。
我担心的是,当从 JS 上下文(无论是 ffi 还是本机模块)调用 C++ 时,我已经读到了显着的开销(比正常情况多)。通常它的性能是值得的,但考虑到每帧在两种语言之间来回调用多少次,也许这不是最好的主意?相反,也许像 Python 这样的东西会更合适,因为它的开销为零(尽管 Python 通常要慢得多),或者是一个不同的 JS 解释器一起使用?
【问题讨论】:
-
对任何语言的所有函数调用都有开销。
-
@NeilButterworth 嗯,是的,很明显,但某些情况可能会导致比其他情况更大的开销,我问的是这个非常具体的情况。从 C++ 内部调用 C++ 或 JS 调用 JS 函数与 v8 中的 JS 到 C++ 截然不同。我不明白为什么问这个问题这么荒谬?
-
Python 通常很慢。不过也许不比 JavaScript 慢 :)
-
@zzxyz CPython 无疑比 v8 JavaScript 慢得多。
-
我不会担心它然后@griffort 它会是微不足道的
标签: javascript c++ game-engine v8 embedded-v8