(Python)偶数判定プログラムの速度比較

概要

正確には偶数判定ではなく2で割ったあまりの計算方法の速度比較

 

ネットに落ちているプログラムを見ていると

n & 1 == 0

という判定式があった

これはnの下位1ビットが0であるかどうか

つまり、偶数であるかどうかの判定式だが可読性は全くない

でももしかしたら速度が早いのかもと思って比較してみた

 

比較

比較するプログラムは以下

A.

n % 2

B.

n & 1

 

プログラム

import random
import math
import time

startTime = time.time()


def main():
    print("***START***")
 
    test004()

    print("****END****")


def setStartTime():
    global startTime
    startTime = time.time()

def calcProcessTime():
    endTime = time.time()
    elapsedTime = endTime - startTime
    print(f"処理時間: {elapsedTime}秒")
 
def test004():
   
    loop = 100000000
   
    setStartTime()
    # ここに計測したい処理を記述する
    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

の方が早い