概要
正確には偶数判定ではなく2で割ったあまりの計算方法の速度比較
ネットに落ちているプログラムを見ていると
n & 1 == 0
という判定式があった
これはnの下位1ビットが0であるかどうか
つまり、偶数であるかどうかの判定式だが可読性は全くない
でももしかしたら速度が早いのかもと思って比較してみた
比較
比較するプログラムは以下
A.
n % 2
B.
n & 1
プログラム
import randomimport mathimport time
startTime = time.time()
def main():print("***START***")test004()
print("****END****")
def setStartTime():global startTimestartTime = time.time()
def calcProcessTime():endTime = time.time()elapsedTime = endTime - startTimeprint(f"処理時間: {elapsedTime}秒")def test004():loop = 100000000setStartTime()# ここに計測したい処理を記述するfor i in range(loop):mod2A(i)
calcProcessTime()# ------------
setStartTime()for i in range(loop):mod2B(i)calcProcessTime()
def mod2A(n):return n % 2
def mod2B(n):return n & 1
結果
Aが上
Bが下
結論
n % 2
の方が早い