Недавно я попытался сравнить производительность нескольких механизмов JavaScript, чтобы проверить производительность алгоритма сортировки, который я написал.В процессе я наткнулся на поведение, которое я не могу объяснить.В V8 и Spidermonkey функция pythagoras вычисляется в основном за то же время, что и sqrt, иногда даже быстрее!Поскольку sqrt является частью вычисления, я бы предположил, что он должен быть намного медленнее, чем 10000000 итераций ... Кажется, только в чакре пифагор рассчитывается на 3-4 секунды медленнее.
компьютер:
- ОС: Win 10 64 бит
- Процессор: i5-8250U 4 ядра
- Оперативная память: 8 ГБ
с последними доступными версиями каждого браузера нана этот раз (Chrome, Firefox и Edge)
Вот мой тестовый сценарий:
var out = document.getElementById("output")
var start, temp,
lat1 = 14, lat2 = 28, lon1 = 12, lon2 = 24,
steps = 10000000
start = Date.now()
for(var i = 0; i < steps; i++) {
temp = Math.sqrt(lat2)
}
out.innerHTML += '<div> sqrt : ' + (Date.now() - start) + '</div>'
// pythagoras
start = Date.now();
for(var i = 0; i < steps; i++) {
temp = Math.sqrt(Math.pow(lat2 - lat1, 2) + Math.pow(lon2 - lon1, 2))
}
out.innerHTML += '<div> pythagoras : ' + (Date.now() - start) + '</div>'
PS: almsot setRandomLatLon () постоянно занимает около 122 мс (по крайней мере в V8)