NISHIO Hirokazu
[Translate]
Pythonの高速化
1: アルゴリズムを工夫する
2a:
PyPy
で走らせる
配列の添え字アクセスが多いなどのとき
2b:
Numpy
を使う
配列に対する一括操作が多い時
3a:
Numba
でAOTコンパイルする
うまくハマれば速いがデータ構造やライブラリに関してまだ制約が大きい
再帰呼び出しできない
3b:
Cython
で書いてコンパイルする
ちゃんと書けば速い
ちゃんと書くのはCでプログラムを書くようなもの
3c: C++でライブラリを書く
Tweet
Related Pages
Cython
numba
→
numba
×
pypy
×
観測範囲の違い
×
二人が違うことを言う絵のシリーズ
→
革新的技術
→
pypy
→
PyPyとMacOSX
→
atcoder
×
テストは記憶の手段
×
人に教える
×
numba
×
abc171
×
質の良い情報源の発見
×
テストの高速サイクル
×
気づきの言語化
×
abc172c
×
経路に依存しない
×
順序のない列は多重集合
×
educational_dp_contest
×
エンジニアの学び方
×
学び方
→
僕のatcoderの学び方(〜緑)
→
atcoder
×
atcoder_library_practice_contest
×
numba
×
Cython
×
フェニック木
×
セグメント木
×
遅延伝搬セグメント木
×
接尾辞配列
×
lcp_array
×
Pythonでの累乗・逆数・階乗・階乗逆数・組み合わせ
×
中国剰余定理
×
floor_sum
×
np.convolve
×
two_snuke
×
長整数が速い
×
dsu
×
unionfind
×
最大流
×
最小費用流
×
scc
×
2-sat
→
AtCoder Library
→
numpyの添え字アクセスは遅い
×
ループをnumpyに任せる
×
numba
×
RBST
→
np.arrayが遅い
→
Cython
×
pypy
×
atcoderのcythonではnumpyが使えない
→
Cythonで添え字を型宣言しても速くない
→
Cython
×
atcoder
→
ABC162C
→
pythonでローカル変数はグローバル変数より速い
×
Cython
→
Cythonでは関数内で関数定義ができない
→
ABC171 F
×
numba
×
np.ascontiguousarray
×
フェルマーの小定理
×
ユークリッドの互除法
×
平方分割
→
Pythonでの累乗・逆数・階乗・階乗逆数・組み合わせ
→
座標圧縮
×
setはメモリ食い
×
numba
×
numbaに複雑な型を渡す
×
numba bisect
×
numpy.unique
×
長方形グラフ探索
×
番兵
×
numba np.concatenate
×
csr_matrix
×
リンクトリスト
×
mprof
×
atcoder
→
ABC168 F
→
abc170_e
×
pythonでmultiset
×
平衡二分木
×
フェニック木
×
numba
→
RBST
→
numba
→
numba contiguous array
numba recursion
numbaに複雑な型を渡す
ABC169 F
numba Segmentation fault
→
numba
×
np.concatenate
→
numba np.concatenate
→
剰余群逆元漸化式の導出
×
numba
×
atcoder
×
abc171
→
ABC171 F
→
atcoder
×
abc170
×
ダイクストラ法
×
長方形グラフ探索
×
numba
×
番兵付きの一次元配列
×
line_profiler
×
デバッグプリントのコメントアウト
→
ABC170_F
→
numpy.searchsorted
×
二分探索
×
bisect
×
numpy
→
numpy.unique
→
numba
×
bisect
→
numba bisect
→
np.einsum
×
numpy
→
np.dot, np.tensordot, np.matmulの違い
→
np.load
×
numpy
→
np.loadの結果からオブジェクトを取り出す
"
Engineer's way of creating knowledge
" the English version of my book is now available on
[Engineer's way of creating knowledge]
(C)NISHIO Hirokazu / Converted from
[Scrapbox]
at
11/23/2025, 5:27:41 PM
[Edit]