V8开发人员在这里。正如评论员所指出的那样,这个问题有点含糊不清,无法给出可靠的答案(在这里也可能不是真正的话题),但是我可以提供一些想法。
V8具有某些硬性要求,例如:
- 它仅需要几兆的内存才能启动,因此它不能在容量少于此数的微控制器上运行
- 对于正常操作,它需要(来自OS /内核)权限来分配可执行内存。最新版本支持“无节制”模式,这种模式可以避免这种情况,但会牺牲性能(不生成优化代码),而这取决于您的工作量。
- 它生成的代码针对某些最低CPU功能,例如x86上的SSE2和ARM上的armv6 + vfpv2。此最小值甚至适用于“无节制”模式,因为它执行V8在构建时生成并包含在其二进制文件中的代码。 (只要有足够的工程投资,就可以从技术上修改其代码生成后端,以降低硬件需求。)
- 它正式支持在Windows,MacOS,Linux,Android,紫红色上运行;社区也支持其他一些操作系统。如果您的嵌入式设备具有不同的OS,或者根本没有内核,则必须进行调整。
除此之外,这只是您想要事物变快的问题。除了平台兼容性要求之外,如果您愿意等待足够长的时间,几乎所有软件都可以在几乎任何硬件上运行。您是否曾见过Raspberry Pi在常规的Linux发行版中启动,或者在Pentium-133上启动Windows XP?它可以工作,但是很慢!人们花很多钱购买更快的硬件是有原因的;-)
这方面的一些注意事项:
- 在许多情况下,原始执行速度并不重要。例如,当在本机模块中完成繁重的工作时,通常可以在这些模块之间使用相对较慢的脚本语言作为“胶水”。
- V8并非针对资源严重受限的环境,但是还有其他JavaScript引擎专门针对微控制器。为了节省内存和复杂性,它们中的许多仅支持有限的功能集(例如,仅ES3或ES5,没有现代的EcmaScript功能)。
- 如果给定用例确实对较弱的硬件有严格的性能要求,那么使用低级语言是有意义的。因此,许多微控制器都使用C语言(即C的子集)进行编程。
谈到C / C ++与JavaScript:很难比较。简短的答案是C更快,但这取决于。您可以在微基准测试中使用动态编译代码的优势,因此JavaScript会更快。通常,与手动内存管理相比,诸如自动垃圾收集之类的语言功能会花费百分之几的性能。通过JIT编译来减轻动态语言的速度同样会花费一些时间,只是因为这是CPU要做的额外工作。在足够快的硬件上,所有这些开销通常都足够小而无关紧要,但是,如果您在硬件完全无法做的事情上运行(同时仍然满足用户对性能的期望),则评估可能会改变。 / p>
,
这是一个完整的答案,太多了。
- 是否有可能将整个V8引擎嵌入芯片中,以使javascript以与C / C ++相同的性能(或几乎相同)运行在它们上?
没有V8不能在微控制器上运行。也许是微处理器。但是可以,您可以在微控制器上运行javascript。 Espruino是一个很好的例子。我不知道它的速度,但它似乎能够填补用于微控制器编程的爱好者空间。就像micropython一样。
本文链接:https://www.f2er.com/3095321.html