Skip to content

iOS 下 JavaScript 引擎 C++ Binding 性能测试 #3

@retvoid

Description

@retvoid

之前在网上有看到说 Node.js 与 C++ 频繁交互会影响性能,但具体 overhead 多少不记得了,有时间可以去测试一下,或者有网友知道的话,欢迎留言告诉我。

对于 iOS 来说,JavaScriptCore (后称 JSCore )是 Apple 钦定的 JS 引擎,其实除了 JSCore,iOS 上也可以跑其他 JS 引擎,比如 ChakraCore 以及 Firefox 的 SpiderMonkey,理论上只要是支持解释器模式的JS引擎都有机会可以运行在 iOS 系统上。刚好最近 V8 也支持了解释器模式(JITless) ,今天正好来看看 V8 和 JavaScript Core 在 iOS 下的 binding 性能表现究竟孰优孰劣。我这边暂时只简单测试 C++ 和 JS 交互的性能。

源码会放到这仓库下 ios-javascript-interop-perf

JavaScriptCore binding 性能

image

实验所用机器为 iPhone XS Max,iOS 12.2 系统,当前仅测试了一个空调用,JavaScript 未进行任何逻辑运算。

y轴表示调用固定次数的平均耗时,单位是微妙,x轴代表调用次数。可以发现平均调用所用耗时为 0.599μs,实际上测量下来发现性能还是不错的,其他机器需要再进行测量看看。

V8 binding 性能

待测

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions