【发布时间】:2017-02-03 17:15:39
【问题描述】:
我需要在 WebKit 上运行此代码,它是 android 混合应用程序的一部分:
for(var x = 0; x < width; x++) {
for(var y = 0; y < height; y++) {
var i = (y * width + x) * 3;
var r = data[i];
var g = data[i + 1];
var b = data[i + 2];
var green = is_green(r, g, b);
x_histogram[x] += green;
y_histogram[y] += green;
}
}
这里是完整的测试代码:https://jsbin.com/boduputebu/edit?js,console
我认为 V8 比 Firefox (SpiderMonkey) 更快,但是对于这个简单的代码,SpiderMonkey 明显更快。在我的笔记本电脑上,性能是:
Chrome: 30 ms
Node: 30 ms
Firefox: 3 ms
Java (same code with Java): 3 ms
您有什么想法可以更改代码以使其在 V8 上运行得更快。以目前的性能,我不得不在 Java 端本地编写它,但这对我来说不是一个好的选择。或者如果没有办法让它更快,你知道为什么 V8 运行这段代码很慢吗?
版本:
Chrome: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36"
FireFox: "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0"
【问题讨论】:
-
虽然差异较小(8-9 vs 2.5-3 ms),我可以reproduce这个。很有趣。
-
FF 不像 Chrome 那样忙于收集您的元数据?
-
您想要关于 JavaScript 引擎内部结构的技术解释,还是只是对您的代码进行修复?
-
x_histogram[x] += green; y_histogram[y] += green;好像很贵 -
@ÁlvaroGonzález,两位,我想修复我的代码,但也有兴趣了解。
标签: javascript v8 spidermonkey