老师,关于运行两次归并算法,时间不一致的问题
来源:3-2 归并排序法的实现
风来坊
2018-05-20
我运行了您的课程代码,发现运行两次归并程序时间是一致的,但是我把 //cout << "Test for random array, size = " << n << ", random range [0, " << n << "]" << endl;这行打印输出注释掉再次运行,第一次排序用的时间很长,不清楚是什么原因,下面是运行情况,
注释掉前边的cout后:
测试环境为VS2013,想请教一下老师导致这种现象的原因是什么?谢谢
写回答
1回答
-
非常奇怪,我在我的环境下又实验了一遍,没有这个问题,和是否有cout没有关系。尤其是在你的测试中,第二次测试一下子跳到了7s多,实在是太慢了。我不确定你的系统或者执行器发生了什么。
对于使用VS进行算法性能测试,建议使用release模式,而非debug模式。VS的debug模式性能结果差距会和release模式相差较大。
我的测试用main函数如下,供参考:
int main() { int n = 150000; // 删除以下cout对测试结果没有影响 cout<<"Test for random array, size = "<<n<<", random range [0, "<<n<<"]"<<endl; int* arr1 = SortTestHelper::generateRandomArray(n, 0, n); int* arr2 = SortTestHelper::copyIntArray(arr1, n); SortTestHelper::testSort("Merge Sort 1", mergeSort, arr1, n); SortTestHelper::testSort("Merge Sort 2", mergeSort, arr2, n); delete[] arr1; delete[] arr2; return 0; }
212018-05-20
相似问题