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

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

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

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

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

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

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

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