参考文献[1]によると、ほんの数行のコードがプログラムの80%の実行時間を消費しているそうです。そのため、「ほんの数行」をあらかじめ把握し、問題発生時のトラブルシュートに活用しましょう。
プログラムの実行速度を計測するツールは、いろいろありますが、C言語系で一般的なものが「gprof」です。gprofは、GCC(GNU Compiler Collection)にあるプログラムの実行速度を計測するツールです。このツールは、プログラムのコンパイル時に記録用のコードを埋め込み、プログラム実行の際に計測します。なお、環境構築は、GCCを導入していれば使用できます。筆者は、本コラムの第95回目で導入したCygwinを使います。構築手順は、そちらをご参照ください。
本ツールの機能は幾つかありますが、「フラットプロファイル」という標準的な測定ログの見方を説明します。フラットプロファイルは「関数の実行時間」「呼び出し回数」などを表示するものです。
gprofの使い方を説明します。今回はリスト1のプログラムで試してみましょう。
void fncA(); void fncB(); void fncC(); int main() { int i; for (i = 1; i <= 1000; i++){ fncA(); fncB(); } return 0; } void fncA() { int i; for (i = 1; i <= 10000; i++){} } void fncB() { int i; for (i = 1; i <= 10000; i++) fncC(); } void fncC() { int i; for (i = 1; i <= 1000; i++){} }
リスト1 例題プログラム
リスト1は、今回使用する例題プログラムです。実行順序は、以下となります。
無理やり無意味なループを入れたのは、PCの実行速度が早すぎて、意味のある計測結果が得られないためです。
Copyright © ITmedia, Inc. All Rights Reserved.