April 2026
356 pages
4h 48m
Japanese
前章ではリソースのトレードオフについて確認しました。RAM、コードスペース、CPUサイクルのどれかを優先せざるを得ませんでした。本章はそうではなく、コードそのものを高速化します。どのシステムにも計算処理があります。
計算処理が少ないほど、CPUリソースも少なくて済みます。実際に取得できるデータの範囲とエラーバジェット(許容誤差)を把握すれば、さまざまなアルゴリズムで過剰な精度を削減できます。例えば結果的にRAMとCPUサイクルも節約できます。
正確さ(accuracy)とは、どれだけ正しいかを示す尺度です。精度(precision)とは、答えに何桁の数字が含まれるかを示します。どちらにも度合いがあります。ある答えは他の答えよりも正確であったり、精密であったりします。本当に正確な答えというのは、限界を把握しているということです。例えば電子の質量はどうでしょうか。
| 電子の質量 | 正確さ | 精度 |
|---|---|---|
| 12.12345124 kg | 正確ではない(間違い) | 非常に高い |
| 10−30 kg | 9 kgよりずっと多いが、会話では十分正確 | 低い |
| 9.109×10−31 kg | 非常に正確 | 高い |
| 9.1090000001×10−31 kg | 非常に正確 | 過剰に高い |
| (9.1092 +/− 0.0002)×10−31 kg | 正確、最良の答え | 高い |
精度はノイズにもなります。意味のない余分な精度のビットは、システムを不要に複雑にし、RAMとプロセッササイクルを浪費します。複雑なアルゴリズムを実装し、データの計算をするときには、製品として必要十分な精度を維持するのに、必要な精度を判断しましょう。
計算処理を高速にする最適化には、コンパイラとプロセッサの理解が必要です。どの処理を高速にできる(逆に、計算コードが1行にできるが、実は2つのライブラリを使って多くの処理になってしまう)のか判断できれば、システムの最適化の準備が整います。 ...
Read now
Unlock full access