在我的 Mac 上的特定情况下,我无法从clock()
ctime 库中的方法获得任何有用的东西。具体来说,如果我尝试在 Windows 7 中的 VMWare Fusion 或 Boot Camp 下运行 VS2010,它似乎总是返回相同的值。一些测试代码来测试这个问题:
#include <time.h>
#include "iostream"
using namespace std;
// Calculate the factorial of n recursively.
unsigned long long recursiveFactorial(int n) {
// Define the base case.
if (n == 1) {
return n;
}
// To handle other cases, call self recursively.
else {
return (n * recursiveFactorial(n - 1));
}
}
int main() {
int n = 60;
unsigned long long result;
clock_t start, stop;
// Mark the start time.
start = clock();
// Calculate the factorial of n;
result = recursiveFactorial(n);
// Mark the end time.
stop = clock();
// Output the result of the factorial and the elapsed time.
cout << "The factorial of " << n << " is " << result << endl;
cout << "The calculation took " << ((double) (stop - start) / CLOCKS_PER_SEC) << " seconds." << endl;
return 0;
}
在 Xcode 4.3.3 下,该函数执行时间约为 2 μs。
在 Windows 7 虚拟机中的 Visual Studio 2010 下(在 VMWare Fusion 4.1.3 下),相同的代码给出的执行时间为 0;这台机器配备了 Mac 的 4 个内核中的 2 个和 2GB RAM。
在运行 Windows 7 的 Boot Camp 下,执行时间再次为 0。
这是一个“离金属太远”的问题吗?