我正在使用 c++ 中的clock_t 函数进行测试,但遇到了一个问题。当我编译时,我在 2 个不同的编译器上进行。我的 Windows 7 计算机(2012)上的 Visual Studio,以及名为“ranger”的 Unix 系统上的 g++。当我刚刚编译我的代码以尝试以秒为单位输出运行不同排序函数所需的时间(最多千分之一秒)时,g++ 编译器似乎完全忽略了我将时间戳除以 1000 的尝试以便将其从毫秒转换为第二种格式。有什么建议吗?g++ 和 Visual Studio 的编译器在这方面有区别吗?
一个简短的代码片段(输出和我为除法所做的事情):
//Select Sort
begin = clock(); //Begin time
selectionSort(array, n);
end = clock(); //End time
d_select = ((float)(end/1000.0) - (float)(begin/1000.0)); //Calculates the time in MS, and converts from MS, to a float second.
//Output data
cout << setprecision(3) << fixed; //Set precision to 3 decimal places, with a fixed output (0's are displayed regardless of rounding)
cout << n << "\t" << d_bubble << "\t" << d_insert << "\t" << d_merge << "\t" << d_quick << "\t"
<< d_select << endl;
Visual Studio 输出(正确):
n Bubble Insert Merge Quick Select
100000 12.530 1.320 0.000 0.030 2.900
Unix输出(不正确):
n Bubble Insert Merge Quick Select
100000 51600.000 11700.000 30.000 150.000 18170.000
有什么建议么?谢谢!