如何根据 v8 来适配代码?

2022-01-05 15:04:59 +08:00
 wszgrcy
if(args.length===1){
call(args[0])
}else if (args.length===2)
{...}
else if  (args.length===3)
{...}
6541 次点击
所在节点    Node.js
4 条回复
iqoo
2022-01-05 15:23:28 +08:00
v8 可以打印生成的字节码 /机器码,可以观察优化是不是真的有效。
libook
2022-01-05 16:39:45 +08:00
v8 会把 JS 转成字节码,然后再进行优化,运行过程中也会实时优化,以及 v8 版本迭代的时候也可能会有优化策略调整,所以这块近乎是混沌的,不好在写代码的时候就预测出来。

这种用引擎跑的语言的设计目标之一就是让开发者不去关心底层细节,真正遇到性能问题可以考虑 Wasm 。
Opportunity
2022-01-05 17:12:22 +08:00
现在最快的已经是

Reflect.apply(call, null, args)

了,所以我的答案是别干,除非你是给特定版本 node 写库
Rache1
2022-01-05 17:38:13 +08:00
这个🌰的说法我有点儿好奇。

因为我在 laravel 源码中的 Facade 部分也看到这种写法,如果有 1~4 个参数就是直接调用,大于 4 个就用 call_user_func_array 的形式。

这才听说,原来这样更优化 😥

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/826359

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX