多くの問題に対して、プロセッサはハードウェアデバイスとの通信コストに比べて高速です。このコストは、通常はI / Oと省略され、ネットワークコスト、ディスクI / O、データベースクエリ、ファイルI / O、およびプロセッサにあまり近接しないハードウェアの使用などが含まれます。したがって、高速なシステムを構築することは、しばしばいくつかのきついループでコードを改善すること、またはアルゴリズムを改善することよりもI / Oを改善することの問題です。
I / Oを改善するには、キャッシングと表現の2つの非常に基本的なテクニックがあります。キャッシングは、その値のコピーをローカルに格納することでI / Oを回避して(一般的には何らかの抽象的な値の読み取りを避ける)、値を取得するためにI / Oは実行されません。キャッシングの第一の鍵は、どのデータがマスターであり、どのデータがコピーであるかを明確にすることです。マスター期間は1つだけです。キャッシングは、コピーが瞬時にマスターへの変更を反映できないことがあるという危険性をもたらします。
表現は、データをより効率的に表現することによってI / Oを安くするアプローチです。これは、人間の可読性や可搬性など、他の要求と緊張していることがよくあります。
表現は、最初の実装から2?3倍に改善されることがあります。これを行うための技術には、人間が読めるものの代わりにバイナリ表現を使用すること、長いシンボルをエンコードする必要がないようにシンボルの辞書を送信すること、そして極端にハフマン符号化のようなことが含まれます。
時には可能な第3の技法は、計算をデータに近づけることによって参照の局所性を改善することである。たとえば、データベースからいくつかのデータを読み込み、集計などの単純なものを計算する場合は、データベースサーバーで取得してください。これはあなたが作業しているシステムの種類に大きく依存しますが、それを調べる必要があります。
Next How to Manage Memory