代码覆盖率基准
测试算法
测试中使用的排序算法是 快速排序。
源代码
#define SIZE 10000000
#define NB_TESTS 4
#include <stdio.h>
#include <stdlib.h>
#include <sys/times.h>
#include <time.h>
void sort (int array[],int size);
main( )
{
int i,t ;
long duration[NB_TESTS];
long duration_val;
clock_t starttime,endtime ;
int *array;
for (t=0;t<NB_TESTS;t++)
{
starttime=clock();
array=(int*)malloc(sizeof(int)*SIZE);
for ( i = 0 ; i < SIZE ; i++ )
array[i]=(i*7)%SIZE;
sort(array,SIZE);
free(array);
endtime=clock();
duration[t]=1000*((double)(endtime-starttime))/CLOCKS_PER_SEC;
fprintf(stderr," %dms",duration[t]);
}
duration_val=duration[0];
for (t=1;t<NB_TESTS;t++)
if (duration_val>duration[t])
duration_val=duration[t];
printf("%d",duration_val);
}
static void quicksort ( int array[], int low, int high )
{
int pos ;
if ( low < high )
{
int item, i, j, t ;
item = array[low] ;
i = low ;
j = high ;
while ( i < j )
{
while ( array[j] > item )
j = j - 1 ;
while ( array[i] <= item && i < j )
i = i + 1 ;
if ( i < j )
{
t = array[i] ;
array[i] = array[j] ;
array[j] = t ;
}
}
pos = j ;
t = array[low] ;
array[low] = array[pos] ;
array[pos] = t ;
quicksort ( array, pos + 1, high ) ;
quicksort ( array, low, pos - 1 ) ;
}
}
void sort (int array[],int size)
{
quicksort ( array, 0, size-1 ) ;
}基准
以下表格显示每项执行的基准(以毫秒为单位)。
| 编译器 | 常规执行 | 分支函数覆盖率 | 决策或行覆盖率 | 条件覆盖率 |
|---|---|---|---|---|
| GCC 无优化 | 6840ms | 8030ms (+17.3%) | 9400ms (+37.4%) | 9830ms (+43.7%) |
| GCC 优化 -Os | 4160ms | 4430ms (+6.4%) | 6180ms (+48.5%) | 6360ms (+52.8%) |
| GCC 优化 -O1 | 3530ms | 4250ms (+20.3%) | 5420ms (+53.5%) | 5970ms (+69.1%) |
| GCC 优化 -O2 | 3950ms | 4040ms (+2.2%) | 5080ms (+28.6%) | 5320ms (+34.6%) |
| GCC 优化 -O3 | 3860ms | 4030ms (+4.4%) | 5060ms (+31%) | 5230ms (+35.4%) |
以下表格显示基准数据(字节)。
| 编译器 | 本地编译 | 语句块或函数覆盖率 | 决策或行覆盖率 | 条件覆盖率 |
|---|---|---|---|---|
| GCC 无优化 | 2128 | 3452 (+1324) | 3996 (+1868) | 4052 (+1924) |
| GCC 优化 -Os | 1940 | 3196 (+1256) | 3716 (+1776) | 3760 (+1820) |
| GCC 优化 -O1 | 1968 | 3172 (+1204) | 3736 (+1768) | 3792 (+1824) |
| GCC 优化 -O2 | 2100 | 3452 (+1352) | 4096 (+1996) | 4160 (+2060) |
| GCC 优化 -O3 | 3544 | 3548 (+4) | 4364 (+820) | 4428 (+884) |
Coco v7.2.0©2024 The Qt Company Ltd.
Qt 及其相关标识是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标均属于其各自所有者。