はじめに
今回は、ごく些細な話です。
ちょっと意外だったので書いておきます。
なんかUbuntuの方が速い気がした
僕のPython環境は。
・Windows11にAnaconda/Python3.8
・Windows11のWSL2にインストールしたUbuntu20.04のPython3.8
の2つあります。
どちらもVsCodeから参照して開発・実行できるようにしています。
僕の場合、Pythonはほぼ「自分用ツール作成」に使ってます。
なので、Windows用とUbuntu用をいったりきたりすることが多いですが、なんとなく、同じような処理やテストコードを書いているのに、Ubuntuのpythonの方がなんか速い気がしていました。
簡単なコードでベンチマークしてみた
感覚だけではモヤっとするので、以下のような簡単なコードで試してみることにしました。
import time
def hoge(x, n):
for i in range(n):
x = 1 / (x * (x - 1)) + 4.6
return x
s = time.perf_counter()
print(hoge(0.5, 10000000000000))
print(hoge(0.5, 10000000000000))
print(hoge(0.5, 10000000000000))
print(hoge(0.5, 10000000000000))
print(hoge(0.5, 10000000000000))
print(hoge(0.5, 10000000000000))
e = time.perf_counter()
print(str((e - s) * 1000000) + "マイクロ秒")
処理は以下の記事を参考にしました。
http://verifiedby.me/adiary/0156
これを両方の環境で20回ずつ実行して、平均的な数値で比較してみようというわけです。
比較してみた結果
実際、実行都度、同じ環境でもかなり実行速度にバラつきがでます。
特に、最初の1回が極端に遅くなります。
なので、その数値をはぶいて計測してみました。
結果はこうでした。
・WindowsのPython:平均780マイクロ秒
・UbuntuのPython:平均約70マイクロ秒
あれあれ。
10倍以上違います。
四則演算だけのベンチマークですし、たまたまかもしれませんが、なかなかの差です。
同じWindows11上で動くWSL2上のUbuntuで動くPythonが、本体であるWindows11で動くPythonよりも速いという理屈がよくわかりませんが、事実は事実。
機械計算系とか処理時間がかかるのは、今後WSL2/UbuntuのPythonでやろうと思います。
ではでは。