タグ: Python
「Python」に関係するログが 15 本あります。
-
AES-GCM が Python 67.6 MB/s、.NET 6143.2 MB/s。同じ CPU で 90 倍離れた
Snapdragon X Elite の同じ 128MB を、cryptography / pycryptodome / CNG / .NET 9 の 4 経路で暗号化した。出力は全部一致したのに、AES-256-GCM の速度だけ 90 倍離れた。ついでに前回の宿題だった「OpenSSL を新しくすれば速くなるのか」にも答えが出た。
-
Python の SHA-256 を8倍にした — hashlib をやめて bcrypt.dll を ctypes で叩いた
CPython 3.12.10 の hashlib は SHA-256 で289.0 MB/sしか出ない。Windows の CNG を ctypes で直接呼んだら2292.5 MB/sになった。同じ Python プロセス、同じ128MB、同じ digest で7.9倍。SHA-1 と SHA-512 では同じ手が効かなかったので、原因も一緒に絞り込めた。
-
12コアを1つずつ固定して測ったら80%の差が出たが、コアの個体差ではなかった
同じ整数ループを12個の論理プロセッサに1つずつ固定して30周まわすと、最小値が0.1369秒から0.2469秒まで80.4%開いた。原因を追うと、コアの性能差ではなく Windows が低い番号のコアへ仕事を寄せていた。空いている4コアだけで測り直すと差は6.5%まで縮んだ。
-
x64 エミュレーションでどれだけ遅くなるか、同じ Python 3.12.10 で測った(SHA-256 だけ逆転した)
同一ビルドの Python 3.12.10 を ARM64 版と x64 版で用意し、8種類の処理を比べた。整数ループは1.56倍、平方根は2.21倍まで遅くなる一方、SHA-256 はエミュレーション側が1.35倍速いという逆転が出た。
-
同じループを Python と Node で回したら5倍差がついた(ARM64 Windows 実測)
1000万回の加算を Python と Node で回したところ、中央値で934.5ms 対 185.9ms になった。どちらも ARM64 ネイティブで、エミュレーションは挟まっていない。
-
pip install が ARM64 Windows で通るか、主要20パッケージを実際に試した
win_arm64 の wheel があるかどうかを20パッケージで実測した。18本は問題なく取得でき、tiktoken と pyarrow の2本だけが No matching distribution found で落ちた。
-
素数カウントを5処理系で走らせたらJava 8 x64がPython ARM64を大きく抜いた
2から2,000,000までの素数カウントは4処理系とも148933で一致し、.NET 9 ARM64が134ms、Python 3.12 ARM64が41519msだった。
-
pandas 3.0.0rc2 では CSV 書き出しが 3402.5ms かかった
2000000行のDataFrameで to_csv は3402.5ms、read_csv は882.7ms。処理本体よりCSV入出力、とくに書き出しが重かった。
-
orjson 3.10.15 だけが ARM64 Windows でビルド失敗した
httpx、rich、pydantic は入ったが、orjson 3.10.15 だけが113.28秒後に失敗した。win_arm64 wheel が無く、Rust ビルドで止まった記録。
-
matplotlib.pyplot の import だけで 963.8ms かかった話
主要な Python パッケージ 13 個を import するだけのプロセスで測ると、matplotlib.pyplot は963.8ms、pandas は829.5ms だった。
-
json.loads が 105.3ms、正規表現 compile 差が小さかった話
Python 3.12.10 の標準ライブラリで 50,000 件の JSON と 20,000 行のログを測った。json.loads は105.3ms、compile 済み正規表現は7.51msだった。
-
Pillow 12.1.0 の PNG 保存が592.98msかかった話
Pillow 12.1.0 で6000x4000のランダム画像を測ると、PNG保存が592.98msで最重だった。JPEG保存184.42msより3倍以上遅いが、測定設計には欠陥があった。
-
zlib レベル6が102.7 MB/sで圧縮率110.28倍だった
同じ入力で zlib / bz2 / lzma を測った。zlib-6 は102.7 MB/sで110.28倍、lzma は1030.73倍まで縮むが、入力の作り方が失敗だった。
-
hashlib の blake2b が 615 MB/s、sha256 が 145 MB/s だった
64MB のランダムデータを hashlib で測ると、blake2b は615 MB/sで最速、sha256 は145 MB/sで最遅だった。OpenSSL の暗号拡張まわりを疑いたくなる結果になった。
-
Snapdragon X Elite 12 worker は8 workerより遅かった
ProcessPoolExecutorで3000000回の整数ループをworkerごとに回すと、8 workerと10 workerが37.26Mopsで並び、12 workerは34.25Mopsへ落ちた。