Является ли (все еще) случаем, что побитовый оператор И всегда быстрее, чем модуль для теста нечетного числа? - PullRequest
0 голосов
/ 10 сентября 2018

Я немного читал, пытаясь лучше понять побитовые операторы, и наткнулся на полезный старый пост в блоге за 2012 год , в котором говорилось, что - в тесте с нечетным числом на случайной, положительной, целочисленной x - оценке x & 1 был на 60% быстрее на компьютере автора, чем оценка x % 2. Вещи, которые я читал где-то в Интернете (в том числе на SO), подтверждают, что побитовый оператор работает быстрее.

Раньше я никогда не писал тесты производительности в jsperf, но мне было интересно проверить это, чтобы увидеть, какая разница была в Javascript. Я был удивлен, обнаружив, после тестирования на нескольких различных браузерах и устройствах, что по модулю, похоже, быстрее, чем нет.

Результаты

Chrome на Chromebook

Chrome on Chromebook

Chrome на Huawei P8

Chrome on Huawei P8

Chrome на Macbook Pro

Chrome on Macbook Pro

Firefox на Macbook Pro

Firefox on Macbook Pro

Safari на Macbook Pro

Safari on Macbook Pro

Safari на Macbook Air

Safari on Macbook Air

Я запускал каждый тест несколько раз, чтобы проверить, соответствуют ли результаты. На FF и Chrome были постоянные победители, хотя у Safari было больше шансов.

Поскольку у меня вообще нет опыта тестирования производительности, я как-то плохо написал тесты? Если нет, то может ли быть так, что современные устройства и браузеры как-то приводят к лучшей производительности для оператора модуля, чем для побитового И (или незначительной разницы в производительности)? Это даже подходящий способ для сравнения?

Или происходит что-то еще, чего я еще не понимаю? (скорее всего!)

1 Ответ

0 голосов
/ 10 сентября 2018

Я думаю, что вы ответили на свой вопрос.Это всегда так?Очевидно, нет.Как и многие другие вещи с JavaScript, результаты сильно зависят от браузера, так как каждый имеет свой собственный движок или реализацию.

...