koffi性能
以下是 Koffi 调用在三个基准测试中的执行时间的快速概述,其中与理论上理想的 FFI 实现(使用预编译的静态 N-API 粘合代码近似)进行了比较:
下面详细说明了这些结果,并与 node-ffi/node-ffi-napi 进行了比较。
下面显示的结果是在x86_64 Linux 机器(Intel® Core™ i5-4460)上测量的。
该测试基于对简单标准 C 函数的重复调用rand,并具有三种实现:
第一个是参考,它通过 N-API 模块调用 rand,接近完美(无开销)Node.js > C FFI 实现的理论极限(预编译静态胶水代码)
第三个使用官方 Node.js FFI 实现,node-ffi-napi
Benchmark
Iteration time
Relative performance
Overhead(额外开销)
由于 rand 是一个非常小的函数,因此 FFI 开销清晰可见。
此测试类似于 rand 测试,但它基于atoi,它采用字符串参数。Javascript (V8) 到 C 字符串的转换相对缓慢且繁重。
Benchmark
Iteration time
Relative performance
Overhead
由于 atoi 是一个非常小的函数,因此 FFI 开销清晰可见。
该基准测试使用 Raylib 中基于 CPU 的图像绘制函数。调用比以前的基准测试要重得多,因此 FFI 开销减少了。在此实现中,Koffi 与:
Baseline:完整的 C++ 版本代码(无 JS)
下面显示的结果是在 x86_64 Windows 计算机(Intel® Core™ i5-4460)上测量的。
Benchmark
Iteration time
Relative performance
Overhead
请注意,此页面上的所有基准测试结果都是使用 Clang 构建的二进制文件生成的。
一切构建完毕并准备就绪后,运行