나는 내 코드 시간을 측정하는 방법에 대한 다른 예제를 찾아 보았지만 크로노 또는 시간을 사용하는 코드는 전혀 작동하지 않는 것으로 나타났습니다 (0을 반환합니다). 그러나, 무엇이 작동 했는가 QueryPerformanceCounter. 그것을 사용하는 유일한 단점은 내가 읽었을 때 Windows에서만 사용할 수 있다는 것입니다. 강사는 Mac을 사용하므로이 코드를 전달할 수 없습니다. 이것은 QueryPerformanceCounter를 사용할 때 내 코드의 모습입니다.매우 작은 실행 시간을위한 프로그램 실행 시간
#include <iostream>
#include "heapsort.h"
#include "quicksort.h"
#include "insertionsort.h"
using namespace std;
#include <windows.h>
//THE FOLLOWING CODE RETURNS RUNNING TIME IN MICROSECONDS.
//https://stackoverflow.com/questions/1739259/how-to-use-queryperformancecounter
double PCFreq = 0.0;
__int64 CounterStart = 0;
void StartCounter()
{
LARGE_INTEGER li;
if (!QueryPerformanceFrequency(&li))
cout << "QueryPerformanceFrequency failed!\n";
PCFreq = double(li.QuadPart)/1000000.0;
QueryPerformanceCounter(&li);
CounterStart = li.QuadPart;
}
double GetCounter()
{
LARGE_INTEGER li;
QueryPerformanceCounter(&li);
return double(li.QuadPart - CounterStart)/PCFreq;
}
int main(){
static const size_t SIZE = 150;
int arr[] = { 685, 119, 938, 836, 721, 801, 738, 334, 739, 89, 917, 277, 708, 905, 978, 84, 620, 948, 409, 891, 447, 957, 673, 627, 546, 137, 456, 594, 878, 972, 722, 934, 383, 628, 103, 604, 132, 2, 428, 893, 212, 629, 646, 382, 348, 49, 306, 707, 156, 373, 733, 419, 323, 825, 112, 930, 432, 862, 830, 69, 994, 600, 226, 570, 759, 988, 289, 75, 232, 167, 292, 644, 10, 679, 607, 522, 967, 341, 989, 130, 326, 816, 503, 794, 303, 108, 915, 148, 258, 73, 206, 701, 897, 350, 713, 940, 764, 471, 936, 93, 163, 824, 950, 796, 98, 823, 465, 37, 102, 342, 243, 696, 687, 935, 459, 50, 553, 225, 562, 181, 453, 665, 525, 175, 768, 251, 996, 954, 925, 531, 962, 585, 250, 829, 777, 928, 76, 704, 565, 20, 422, 51, 125, 197, 588, 267, 850, 494, 699, 173 };
StartCounter();
heapSort<int> heap(arr, SIZE);
cout << GetCounter() << endl;
StartCounter();
quickSort<int> quick(arr, 0, SIZE-1);
cout << GetCounter() << endl;
StartCounter();
insertionSort<int> insertion(arr);
cout << GetCounter() << endl;
return 0;
}
_proformance profiling code injections_을 요구하십니까? 예 : 'gprof '와 함께 사용 가능합니다. 어떤 툴체인을 사용해야합니까? –
@ πάνταῥεῖ 그게 무슨 뜻인지 모르겠습니다. Google은 이에 대한 정의도 반환하지 않습니다. 각 정렬 알고리즘의 소요 시간을 알아야합니다. 마이크로 초가 걸리지 만 세 가지 정렬 알고리즘을 비교하려면 여전히 필요합니다. 그건 그렇고, 나는 윈도우에있다. 나는 강요하는 도구가 있다고 생각하지 않지만 강사가 코드를 실행할 때 작동해야합니다. –
Windows에서 모든 작업에 대해 정확한 마이크로 초 해상도를 얻으려면 문제가있을 수 있습니다. (10 분의 1) 밀리 초가 가장 좋은 방법입니다. –