为什么对象比Safari JavaScript中的类型化数组快

bri*_*umn 5 javascript safari performance webkit typed-arrays

我正在使用Javascript vp8解码器进行工作,因此在这种情况下,对于Safari来说,需要一切都尽可能快,因为Webkit浏览器是目标平台。

需要运动矢量的结构。它几乎是一个2个字符的对象:

var test = { x:0, y:1 }
var testArray = new Uint8Array(2);
Run Code Online (Sandbox Code Playgroud)

这个

test.x = (test.x | 0 + 1) | 0;
test.y = (test.y | 0 + 1) | 0;
Run Code Online (Sandbox Code Playgroud)

在野生动物园中比这快得多:

testArray[0] = (testArray[0] + 1) | 0;
testArray[1] = (testArray[1] + 1) | 0;
Run Code Online (Sandbox Code Playgroud)

但是其他浏览器则相反。

为什么...?

尝试jsperf:https://jsperf.com/obj-vs-struct-7

在ios(仅桌面浏览器)上,编辑伪结构更快。