C言語で特定の処理の実行時間を計るプログラムを使いたいです。
基本的な部分は把握したつもりですが、どうも組み込もうと思うと
コンパイルがエラーを吐いてしまいます。
学校の課題で、クイックソートとバブルソートの実行時間比較をする。
というのがあって、ソート部分のプログラムと計算結果を表示するプログラム
をメインのプログラム(=整数乱数配列を生成するプログラム)に外部呼出し
しています。
つまり
メインの乱数生成プログラム、ソートプログラム、表示プログラム
の3つのソースがある状態で、ソートの並び替え部分の実行時間を測定したい
んです。測定結果をソートプログラムのほうで表示するようにすると
printf関数が定義されていないとのエラーがでます。#include<stdio.h>を
ソートプログラムに追加するとよくわからないエラーが出てしまい、どうした
らいいのか分からない状態です。
環境
OS:Win vista 32bit
コンパイラ:gcc (cygwinを利用)
↓問題のある quickSort.c
#include<time.h> #include<sys/time.h> #include<sys/resource.h> #include<stdio.h> double getrusage_sec(){ struct rusage t; struct timeval tv; getrusage(RUSAGE_SELF, &t); tv=t.ru_utime; return tv.tv_sec+(double)tv.tv_usec*1e-6; } void quickSort(int data[/url], int start, int end) { double t1,t2; int i,j, p, t; p = data[(start+end)/2]; i = start; j = end; t1=getrusage_sec(); while (1) { while (data<p) { i++; } while (p<data[j]) { j--; } if (i>=j) { break; } t = data; data = data[j]; data[j] = t; i++; j--; } if (start < i-1) { quickSort(data,start,i-1); } if (j+1 < end) { quickSort(data,j+1,end); } t2=getusage_sec(); fprintf(stdout,"use_time=%10.70f\n",t2-t1); return ; }
他に必要なソースとかあったら教えてください。追記します