연산자가 오버로드 된 간단한 수학 벡터 클래스가 있습니다. 내 운영자를위한 타이밍 결과를 얻고 싶습니다.타이밍 연산자 +, 연산자 -, 연산자 * 및 연산자/
Vector sum;
for(size_t i = 0; i<iter; ++i)
sum += RandVector();
cout << sum << endl;
그런 다음 나는 그것이 ITER 확률 벡터를 생성하는 데 걸리는 시간을 뺄 수 =, * =, 및/= 다음 코드 타이밍에 의해 - 난 쉽게 내 + =, 시간을 초과 할 수 있습니다. 테스트에서 Vector는 3 차원이고 iter = 10,000,000입니다.
난과 비슷한 일을하려고 +, -, *,/:Vector sum;
for(size_t i = 0; i<iter; ++i)
sum = sum + RandVector();
cout << sum << endl;
그 다음은 ITER 확률 벡터를 생성하고 ITER 과제를 수행하는 데 걸리는 시간을 빼기 그러나 이것은 "부정적인"제공 컴파일러가 어떻게 든 연산을 최적화하고 있거나 이상한 일이 일어나고 있다고 생각하게 만듭니다.
Fedora Linux 컴퓨터에서 -O3을 사용하여 gcc-4.7.2를 사용하고 있습니다.
clock_t start, k = clock();
do start = clock();
while(start == k);
F()();
clock_t end = clock();
double time = double(end-start)/double(CLOCKS_PER_SEC);
cout << time - time_iter_rand_v - time_iter_ass;
여기서 F는 상기 코드를 실행하는 기능 개체이다
여기에 내 타이밍 코드이다. time_iter_rand_v는 반복 벡터 생성에 걸리는 시간이고, time_iter_ass는 반복 할당 작업에 걸린 시간입니다.
내 질문은 연산자 + 함수의 정확한 타이밍을 얻는 방법입니다. 할당이나 임의의 벡터 생성이 아닌가요?
타이밍을 어떻게 지내십니까? – Gian
clock()을 사용하고 있습니다 –
pippin1289
컴파일러가 시계를 거꾸로 실행할 수 없습니까? 분명히 * 타이밍 코드 *가 잘못되었습니다. – EJP