パフォーマンス プログラミング

実行時にアプリケーションが最も最適化されていることを目標として、パフォーマンスに効果をもたらすようにアプリケーションを構成する方法は多数あります。最適化とは、通常、アプリケーションがより迅速に実行されるか、より少ないメモリ ストレージまたはより少ないリソースを使用して動作できるか、あるいは、使用する CPU パワーがより少ないことを意味します。

通常、これらの要素のいずれかを改善すると別の要素が犠牲になります。つまり、より迅速に実行されるようにアプリケーションを最適化することはできますが、そうすることで、その過程でより多くのメモリが使用される可能性があります。アプリケーションを最適化する際は、目的に応じて、適用する最適化のタイプを選択することになるため、達成する必要がある内容について慎重に検討してください。

多くの場合、パフォーマンスに最大の効果をもたらすのは、コードで適切なアルゴリズムまたはロジックを使用すること、およびそれらの処理で適切なデータ構造を使用することです。(浮動小数点ではなく) 整数演算を確実に使用するのと同程度に単純なことで、パフォーマンス上の大きなメリットを生み出すことができます。「COBOL 構文の最適化」セクションでは、コードの最適化に役立つ多くの優れた手法を示しています

コンパイルはアプリケーションのもう 1 つの最適化できる領域です。開発のデバッグ段階では、パフォーマンスに影響するものの、コードをステップ実行してデバッグするために必要な特定の診断をオンにします。アプリケーションの実稼働バージョンのコンパイル時には、すべてではないにしても、一部の診断をオフにする必要があります。

ヒント: 診断をオフにして構成されたアプリケーションの方が、より最適化されることは事実ですが、診断をオンにして実行することにもメリットがある場合があります。診断によって、予期せぬ問題を最初の発生時に調査できます。診断はリソースを消費するため、問題判別機能とパフォーマンスの間には常に競合が存在します。問題の再現を試みたり単に診断をオンにして問題の再発生を待ったりするよりも、問題の最初の発生時に診断できることの方がどの程度重要かを判断する必要があります。

実稼働バージョンのコンパイル時は、ターゲットとしているプラットフォームについて考慮することも重要です。たとえば、できる限り多くのプラットフォームで動作するアプリケーションを設計している場合、最適化に役立つ特定の CPU 機能を利用できない可能性があります。

求める最適化のレベルを問わず、テスト/実装段階でアプリケーションのベンチマークを行い、許容レベルで機能しているアプリケーションから一連の結果を得て、本番環境でパフォーマンスの問題が発生した場合に比較できるようにしておく必要があります。アプリケーションが実行された環境の詳細 (プラットフォーム、一連の指令、適用されている特定のメモリ ストラテジなど) を含めて、ベンチマークの結果が明確に記録される必要があります。