clock()
Macの特定の状況で、ctimeライブラリのメソッドから何か有用なものを取得するのに問題があります。具体的には、VMWareFusionまたはBootCampのいずれかでWindows7で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で実行されます。
Windows7仮想マシン(VMWare Fusion 4.1.3)のVisual Studio 2010では、同じコードで実行時間が0になります。このマシンには、Macの4コアのうち2つと2GBのRAMが搭載されています。
Windows7を実行しているBootCampでは、実行時間が0になります。
これは「金属から遠すぎる」という問題ですか?