trzeba uruchomić ten kod na WebKit, to jest częścią hybrydowego aplikacji dla Androida:dlaczego Firefox uruchamia ten kod 10x szybciej niż Chrome
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;
}
}
Oto pełny kod do testu: https://jsbin.com/boduputebu/edit?js,console
Myślałem, że V8 jest szybszy niż Firefox (SpiderMonkey), ale tutaj dla tego prostego kodu SpiderMonkey jest znacznie szybszy. Na moim laptopie wydajność:
Chrome: 30 ms
Node: 30 ms
Firefox: 3 ms
Java (same code with Java): 3 ms
Czy masz pomysł, aby zmienić kod, aby zrobić to szybko na V8. Przy obecnej wydajności musiałem napisać ją natywnie w Javie, ale nie jest to dla mnie dobra opcja. Lub jeśli nie ma sposobu na przyspieszenie, czy wiesz, dlaczego V8 uruchamia ten kod bardzo wolniej?
Wersja:
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"
przy czym różnica jest mniejsza (8-9 vs 2,5-3 ms), mogę [odtworzenia] (https://jsbin.com/nexocopuka/1/edit?js,console) tego produktu. Ciekawy. – Cerbrus
FF nie jest zajęty, aby zbierać dane meta tak samo jak Chrome? – Teemu
Czy potrzebujesz technicznego wyjaśnienia na temat wewnętrznych silników JavaScript lub po prostu poprawki do kodu? –