我需要创建一个桌面应用程序,它必须处理一些动画和一堆逻辑。 我想过用node-webkit创建它,这是我以前从未使用过的。
有没有人在这里写过一些桌面应用程序并且比用c ++编码的东西经历过性能?
答案 0 :(得分:2)
因此,这个问题分为两部分:
1)在V8(node-webkit)下执行的Javascript与编译为本机代码的C ++的速度比较
在大多数计算密集型任务中,您预计执行速度会降低3倍到10倍(取决于基准测试)。可以在http://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=all&lang=v8&lang2=gpp找到一个例子;如果您想要更多示例搜索其他v8基准测试。
2)使用Chrome引擎渲染的基于浏览器的UI工具包(基于DOM和CSS,可能还有WebGL)与任何桌面UI工具包(例如,Qt,WxWidgets等)和/或3D的速度比较您正在使用C ++的渲染API(DirectX,OpenGL或各种不同的包装器)。
遗憾的是,这很难进行基准测试,因为有大量不同的UI工具包,每个工具包都有不同的性能特征,可用于您可能使用的每种类型的动画/小部件(取决于它们的实现方式)。如果您正在进行3D渲染并希望将Chrome上的Javascript + WebGL与使用DirectX的C ++进行比较,请参阅https://www.scirra.com/blog/58/html5-2d-gaming-performance-analysis以获取示例基准(他们的数字表示减速约5倍);如果您想要更多示例,请搜索将WebGL与OpenGL和DirectX进行比较的性能基准。
一般来说,良好实现的C ++应该比在node-webkit下运行的Javascript执行得更快,因为远离硬件的抽象层更少。也就是说,除非你正在构建一个特别计算密集型的应用程序,否则在现代桌面上可能看不到差异,你应该更多地关注易于开发而不是性能。
使用node-webkit还可以为您提供为浏览器构建的无数UI库,这可能会加快您的开发时间,特别是如果您已经具有前端Web应用程序开发经验的话。在可移植性方面也有优势 - 除非你使用像Qt和C ++这样的跨平台UI,你将需要特定于平台的UI代码,而使用node-webkit你可以免费获得跨平台的可移植性。