Firebreath 与 NPAPI 性能开销?
Firebreath vs NPAPI performance overhead?
我们知道 Chrome 中的 Firebreath 2.0 插件的开销很小,因为框架为 运行 中的插件创建了一个瘦 PPAPI 可执行文件。
但是,对于 Mozilla 和 Safari,与裸露的 NPAPI 插件相比,Firebreath 插件是否会增加任何开销?
在我们的例子中,我们将 stockfish 国际象棋引擎移植到一个插件中,因此 C++ 代码非常 CPU 密集,即使是很小的开销也很重要。
FireBreath 2.0 不使用 PPAPI——PPAPI 不是第三方插件的可行解决方案,因为除非与 Native Client 一起使用,否则插件将无法使用,除非每次都使用命令行参数专门启用 Chrome已启动。
FireBreath 2.0 使用本机消息传递,插件加载在本机消息主机可执行文件中;因此就 运行 C++ 而言没有开销,但是与浏览器通信的接口使用 JSON 并且是基于字符串的,因此那里绝对会有一些开销。
基本上这取决于您关心的是什么——如果您需要在浏览器和您的 firebreath 插件之间进行超高速通信,您需要进行一些性能测试以查看它是否足够好。如果您真正需要的只是让 C++ 代码像以前一样快,那么没有问题——它是本机代码,所以它的每一点都一样快。每当您与浏览器通信时,您的开销就会来。
我们知道 Chrome 中的 Firebreath 2.0 插件的开销很小,因为框架为 运行 中的插件创建了一个瘦 PPAPI 可执行文件。
但是,对于 Mozilla 和 Safari,与裸露的 NPAPI 插件相比,Firebreath 插件是否会增加任何开销?
在我们的例子中,我们将 stockfish 国际象棋引擎移植到一个插件中,因此 C++ 代码非常 CPU 密集,即使是很小的开销也很重要。
FireBreath 2.0 不使用 PPAPI——PPAPI 不是第三方插件的可行解决方案,因为除非与 Native Client 一起使用,否则插件将无法使用,除非每次都使用命令行参数专门启用 Chrome已启动。
FireBreath 2.0 使用本机消息传递,插件加载在本机消息主机可执行文件中;因此就 运行 C++ 而言没有开销,但是与浏览器通信的接口使用 JSON 并且是基于字符串的,因此那里绝对会有一些开销。
基本上这取决于您关心的是什么——如果您需要在浏览器和您的 firebreath 插件之间进行超高速通信,您需要进行一些性能测试以查看它是否足够好。如果您真正需要的只是让 C++ 代码像以前一样快,那么没有问题——它是本机代码,所以它的每一点都一样快。每当您与浏览器通信时,您的开销就会来。