I/Oバウンド、CPUバウンド、メモリバウンド
プログラムの実行速度が、どこが制約になるかという感じ
〇〇バウンドといったときは、〇〇がプログラムの実行速度のボトルネックになっているということ
I/Oバウンド(I/O-bound)
I/O(Input/Output、入出力)が原因で制約を受ける
ストレージの読み書き速度
ファイルの読み書き
ネットワーク通信の読み書き
etc
CPUバウンド(CPU-bound)
CPUの処理速度が制約となる
メモリバウンド(Memory-bound)
メモリの容量やアクセス速度によって制限を受ける
I/Oバウンドの場合の改善方法
非同期I/Oを使用して、他の処理ができるようにする
複数のIO処理を1回にまとめるようなバッチ処理でIOを削減
SSDなどの高速なストレージを使用する
CPUバウンドの場合の改善方法
並列処理や並行処理で複数のCPUコアを使う
アルゴリズムの計算量削減
より計算量が少ないアルゴリズムを選択するとか、よりよいデータ構造を選択するとか
関連: メモ化
性能の良いCPUに変える
メモリバウンドの場合の改善方法
メモリ使用量を最適化
データ構造の見直し
不要なデータを早めに破棄
メモリの増設、高性能なメモリに変える
キャッシュメモリを使用するようにする?
推測するな、計測せよという言葉もあるので、計測をしてボトルネックを探す必要がある
パフォーマンス分析をする
確認用
Q. ○○バウンドとは
Q. IOバウンドとは
Q. CPUバウンドとは
Q. メモリバウンドとは
関連
計算複雑性理論
参考
CPUバウンドとI/Oバウンド - ablog
I/O bound - Wikipedia
CPU-bound - Wikipedia
Memory-bound function - Wikipedia
【Pythonで高速化】I / Oバウンドとか並列処理とかマルチプロセスとかってなんぞや #Python - Qiita
ChatGPT.iconI/Oバウンド、CPUバウンド、メモリバウンドとはどういったものか
メモ
『サーバ/インフラを支える技術』メモ
バッチ処理について考える #読み物 - Qiita
Identifying disk I/O-bound systems
#並行・並列