【发布时间】:2020-08-14 12:51:12
【问题描述】:
据我所知,V8 Javascript 引擎进行双数转换(到 i32 并返回)来执行位操作。 让我们考虑下一个例子:
const int32 = new Int32Array(2);
int32[0] = 42;
int32[1] = 2;
const y = int32[0] | int32[1];
V8 在这种情况下会进行双重转换吗? 如果不是,是否意味着对 Int32Array 值的位运算更快?
更新: 通过双重转换,我的意思是: 从 64 位(53 位精度)到 -> 32 位,再到 -> 64 位
【问题讨论】:
-
双重转换意味着i32 -> double -> i32,对吧?
-
@D.Pardal 抱歉,我不够清楚。意思是:从 64 位(53 位精度)到 -> 32 位,再到 -> 64 位
-
@SerhiiBilyk 不,“double -> i32 -> double” 没有意义。该值存储为 i32,按位运算发生在 i32 上。它可能会被转换为一个双 in between(按照规范的要求),或者转换被优化掉。
标签: javascript performance bit-manipulation v8 typedarray