Beispiel #1
0
/**
 * 倍率测试: 估计运行时间的增长数量级的方法,用于发现性能问题
 * T(N) = a* N^b *lg N -> T(2N)/T(N) = 2^b
 * 一般地,数学模型中的对数项是不能忽略的,但在倍率假设中预测性能的公式并不那么重要
 * 可选单次测试数或者大量重复测试数
 */
void doubling_ratio(char *alg){
   double prev=multitests(alg,125,20);
   int N=250;
   while(N <= 200000){
      double cur=multitests(alg,N,20); //大量的重复测试数
      printf("%8d %8.1f",N,cur);
      printf("%5.1f\n",cur/prev);
      prev=cur;
      N <<=1;
   }
}
Beispiel #2
0
void compare_algo(int len,int tests){
	item_t *arr=malloc(sizeof(item_t)*len);

	/*随机生成数据,并进行排序*/
	random_array(arr,len,1000000);
	qsort(arr,len,sizeof(item_t),item_cmp);

	
	double total1=0.0;
	double total2=0.0;
	int i;

	for(i=0;i<len;i++){
		total2 +=multitests("binsearch",arr,len,arr[i],tests);
		total1 +=multitests("bsearch",arr,len,arr[i],tests);
		
	}
	printf("bsearch = %.2f\n",total1/tests);
	printf("binsearch = %.2f\n",total2/tests);

}