所以我一直在测试 C 中排序算法的运行时间,并且我不断对代码进行轻微修改,看看它将如何影响速度等,其中一项修改是在排序算法中进行冒泡排序的交换,而不是一个单独的函数调用,我希望这样会更快,因为函数调用在那里打开了自己的堆栈帧,但结果却慢了近一倍,我不知道为什么。
这是代码:
void Swap(int& x, int& y)
{
int temp = x;
x = y;
y = temp;
}
void BubbleSort(int data[], int size)
{
int i, j, temp;
bool is_sorted = false;
for (i = 0; i < (size - 1) && !is_sorted; i++)
{
is_sorted = true;
for (j = size - 1; j > i; j--)
if (data[j] < data[j - 1])
{
//used to be swap(data[j],data[j-1];
temp = data[j];
data[j] = data[j - 1];
data[j-1] = temp;
is_sorted = false;
}
}
}
- 编辑回答评论,是的,我确实在发布时使用编译器优化运行,如果你想看看我是如何获得运行时间的,这里是完整代码https://gist.github.com/anonymous/7363330