April 2023
Intermediate to advanced
452 pages
7h 21m
Japanese
コードを高速化する一番簡単な方法は、処理を減らすことです。最良のアルゴリズムを選択済みで、処理するデータ量を減らしているのなら、実行する命令数を減らす一番簡単な方法は、コードを機械語にコンパイルすることです。
Pythonにはさまざまなコンパイラの選択肢があります。CythonのようなCに基づくコンパイラ、NumbaのようなLLVMに基づくコンパイラ、PyPyのような実行時(Just-In-Time:JIT)コンパイラを内蔵する仮想マシンなどがあります。どれを採用するかは、コードの変更しやすさとチームの開発速度のバランスを取って決める必要があります。
どのツールを使うにせよ、依存関係が増えることは避けられません。さらにCythonでは新しい種類の言語(PythonとCのハイブリッド)で書く必要があるので、その習得に時間がかかります。Cythonを導入すると、Cを知らないメンバーがついていけず、チームの開発速度を低下させることもありえます。ただし、実際には、コードのごく一部で使うだけなので、それほど問題にはならないでしょう。
なにはさておき、まずはCPUとメモリのプロファイリングをして、高水準のアルゴリズムにおいて最適化できないか考えるべきです。アルゴリズムが変われば(たとえば、計算を回避する工夫や再計算を回避するキャッシュ法など)、不必要な処理を減らすのに役立ちます。Pythonの読みやすさも、アルゴリズム的に最適化するのに役立ちます。Radim ...
Read now
Unlock full access