Содржина на објавата
Что быстрей по производительности, оператор "%" или битовый оператор "&"? Мы знаем что битовые операторы работают жутко быстро. Но и простые операторы достаточно оптимизированы. Вот мои тесты на разных платформах (и разном железе, так что смотрим только разницу) 🔸 Windows 10 >>> timeit.timeit('for x in range(1000): x%2', number=100000) 3.8916409015655518 >>> timeit.timeit('for x in range(1000): x&1', number=100000) 2.883111000061035 🔸 Windows 7 VMWare >>> timeit.timeit('for x in range(1000): x%2', number=100000) 4.5197880999999995 >>> timeit.timeit('for x in range(1000): x&1', number=100000) 5.360066200000006 🔸 Ubuntu 16 VPS >>> timeit.timeit('for x in range(1000): x%2', number=100000) 2.355823243036866 >>> timeit.timeit('for x in range(1000): x&1', number=100000) 2.754374884068966 🔸 Debian 10 VMWare >>> timeit.timeit('for x in range(1000): x%2', number=100000) 2.979030784990755 >>> timeit.timeit('for x in range(1000): x&1', number=100000) 3.54338647100667 🔸 Raspbian 10 (наRaspberryPI 4с процессором ARM) >>> timeit.timeit('for x in range(1000): x%2', number=10000) 1.1418334439999995 >>> timeit.timeit('for x in range(1000): x&1', number=10000) 1.4677007579999923 Хм, только на Windows 10 оператор & быстрей чем %. Может это связано с тем что это единственный не виртуальный процессор (кроме ARM на малине)? Не хочу ничего утверждать этой информацией, это просто для заметки. Не так много у меня железа чтобы сделать нормальные тесты и не так много времени чтобы выяснить причину такого поведения.