参考文献[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.