Если в секундах или пол секунды я могу в уме проверить оборот прохождения линии по горизонтали, то меньше уже не могу в уме проверить.
Как это проверить, программно?
#include <windows.h>
uint start = GetTickCount();
// Рисуем линию
qDebug() << "Time: " << GetTickCount() - start;
QTime m_time;
m_time.start();
// Замеряемый код
qDebug() << m_time.elapsed();
QTime m_time;
m_time.start();
if (static_cast<int>(MyRadianToGradus(phi)+0.5) <= 360)
Line.drawLine(50 + phi*720.0/(2*M_PI), 50, 50 + phi*720.0/(2*M_PI), 542); // Рисуем линию
if (static_cast<int>(MyRadianToGradus(phi)+0.5) == 360)
qDebug() << m_time.elapsed();
uint start;
start = GetTickCount();
if (static_cast<int>(MyRadianToGradus(phi)+0.5) == 360)
qDebug() << GetTickCount() - start;
LARGE_INTEGER timerFrequency, timerStart, timerStop;
int timerdelete = 0;
QueryPerformanceFrequency(&timerFrequency);
QueryPerformanceCounter(&timerStart);
if (static_cast<int>(MyRadianToGradus(phi)+0.5) == 360)
{
QueryPerformanceCounter(&timerStop);
double const t( static_cast<double>((timerStop.QuadPart - timerStart.QuadPart) / timerFrequency.QuadPart) / timerdelete);
qDebug() << t;
timerdelete++;
}
LARGE_INTEGER timerFrequency, timerStart, timerStop;
double timerdelete = 1.0;
double t;
QueryPerformanceFrequency(&timerFrequency);
QueryPerformanceCounter(&timerStart);
if (static_cast<int>(MyRadianToGradus(phi)+0.5) == 360)
{
QueryPerformanceCounter(&timerStop);
t = timerStop.QuadPart - timerStart.QuadPart;
t = (t / timerFrequency.QuadPart) / timerdelete;
qDebug() << t;
timerdelete++;
}
void QThread::sleep(unsigned long secs)
{
::Sleep(secs * 1000);
}
void QThread::msleep(unsigned long msecs)
{
::Sleep(msecs);
}
void QThread::usleep(unsigned long usecs)
{
::Sleep((usecs / 1000) + 1);
}
for (int i = 0; i < 120000; ++i){
this->msleep (1);
InterlockedIncrement (&this->counter);
};
timer->start((ui->doubleSpinBox->value()*1000)/60);
timer->start(10);
phi += (360*10) / (ui->doubleSpinBox->value() * 1000);
LARGE_INTEGER timerFrequency, timerStart, timerStop;
double t;
QueryPerformanceFrequency(&timerFrequency);
QueryPerformanceCounter(&timerStart);
if (static_cast<int>((((phi)/720.0)*360)+0.5) == 360)
{
QueryPerformanceCounter(&timerStop);
t = timerStop.QuadPart - timerStart.QuadPart;
t = t / (double)timerFrequency.QuadPart;
qDebug() << t;
}
TIMECAPS tc;
timeGetDevCaps(&tc,sizeof(tc));
uint32_t periodSet=max(1,tc.wPeriodMin);
timeBeginPeriod(periodSet);
QueryPerformanceFrequency(&timerFrequency);
QueryPerformanceCounter(&timerStart);
// Как пройдёт линия доконца выведится время
if (static_cast<int>((((phi)/720.0)*360)+0.5) == 360)
{
QueryPerformanceCounter(&timerStop);
t = timerStop.QuadPart - timerStart.QuadPart;
t = t / (double)timerFrequency.QuadPart;
qDebug() << t;
}
QueryPerformanceCounter(&timerStop);
qDebug() <<"timerStop.QuadPart="<<timerStop.QuadPart;
qDebug() <<"timerStart.QuadPart="<<timerStart.QuadPart;
t = timerStop.QuadPart - timerStart.QuadPart;
qDebug() <<"diff="<< t;
qDebug() <<"timerFrequency.QuadPart="<<timerFrequency.QuadPart;
t = t / (double)timerFrequency.QuadPart;
qDebug() <<"t="<< t;
timerStop.QuadPart= 39669101482
timerStart.QuadPart= 39667533374
diff= 1.56811e+06
timerFrequency.QuadPart= 2825625
t= 0.55496
ui->doubleSpinBox->setValue(ui->doubleSpinBox->value());
timer->start((ui->doubleSpinBox->value()*1000)/60);
ui->doubleSpinBox->setMinimum(0.05); // Минимальное значение
ui->doubleSpinBox->setMaximum(10); // Максимальное значение
ui->doubleSpinBox->setSingleStep(0.01); // Интервал изменения