Я немного читал, пытаясь лучше понять побитовые операторы, и наткнулся на полезный старый пост в блоге за 2012 год , в котором говорилось, что - в тесте с нечетным числом на случайной, положительной, целочисленной x - оценке x & 1
был на 60% быстрее на компьютере автора, чем оценка x % 2
. Вещи, которые я читал где-то в Интернете (в том числе на SO), подтверждают, что побитовый оператор работает быстрее.
Раньше я никогда не писал тесты производительности в jsperf, но мне было интересно проверить это, чтобы увидеть, какая разница была в Javascript. Я был удивлен, обнаружив, после тестирования на нескольких различных браузерах и устройствах, что по модулю, похоже, быстрее, чем нет.
Результаты
Chrome на Chromebook
Chrome на Huawei P8
Chrome на Macbook Pro
Firefox на Macbook Pro
Safari на Macbook Pro
Safari на Macbook Air
Я запускал каждый тест несколько раз, чтобы проверить, соответствуют ли результаты. На FF и Chrome были постоянные победители, хотя у Safari было больше шансов.
Поскольку у меня вообще нет опыта тестирования производительности, я как-то плохо написал тесты? Если нет, то может ли быть так, что современные устройства и браузеры как-то приводят к лучшей производительности для оператора модуля, чем для побитового И (или незначительной разницы в производительности)? Это даже подходящий способ для сравнения?
Или происходит что-то еще, чего я еще не понимаю? (скорее всего!)