Clock() funktioniert nicht richtig!



  • Hallo,
    wenn ich meinen File einlese möchte ich die Geschwindigkeit anzeigen, das funktioniert aber irgendwie nicht weil die differenz zwichen Clock() und dem ersten Clock()(der in einer Variable abgespeichert ist) ist meistens 0, auch wenn Sleeps rein mache, also beide Werte sind immer identisch.

    Hier ist mein code:

    DWORD Clock = clock();
    DWORD ClockSpeedSet = clock();
    wstring line = L"";
    while(getline(fin, line))
    {
    	int PercentBefore = Percent;
    	EventLog.push_back(line);
    	DWORD Pos = fin.tellg();
    	Percent = Pos / (long double)FileSize * PercentLoadFile;
    	if(PercentBefore != Percent)
    	{
    		SendMessage(DATA->hWnd, WM_APP, 5, Percent);		// Set the Percent to the ProgressBar
    	}
    	++count;
    	long TimeNeeded = clock()-Clock;
    	int GeschwindigkeitNow = 1000/(long double)TimeNeeded;
    	double SpeedSetTime = ((double)(clock()-ClockSpeedSet))/(double)CLK_TCK;
    	if(GeschwindigkeitNow != Geschwindigkeit && SpeedSetTime >= 0.1)
    	{
    		Geschwindigkeit = GeschwindigkeitNow;
    		SendMessage(DATA->hWnd, WM_APP, 6, Geschwindigkeit);	// Set the Rate/Speed of Loading the Items
    		ClockSpeedSet = clock();
    	}
    	Clock = clock();
    }
    

    Vielen Dank
    Johannes



  • Was ist denn clock()?
    Versuchs mal mit GetTickCount() stattdessen.



  • Diese Methoden haben meistens eine Auflösung von ca. 10-20 ms.
    Wenn Du etwas genaueres haben willst, dann verwende QueryPerformanceCounter/Frequency



  • Vielen dank für die Antworten, mit QueryPerformanceCounter() hat's funktioniert!!!


Anmelden zum Antworten