Временной промежуток менее одной миллисекунды
для винды есть intime extentionсм. методы QueryPerformanceCounter/QueryPerformanceFrequency
Ну замерять промежуток времени можно с помощью считывания регистра счетчика тактов процессора pentium. Я это делал, когда оптимизировал asm для P-1, вполне ничего работает.
Можно еще вроде бы считывать значения из микросхемы таймера. В те годы она вроде бы работала с семизначной частотой - этого вполне достаточно.
Как с помощью этих методов отмерить, скажем 500 мкс? Кусок кода, схематично, можно?
long frequency;
QueryPerformanceFrequency(out frequency);
long start;
QueryPerformanceCounter(out start);
for (; ; )
{
long current;
QueryPerformanceCounter(out current);
double time = doublecurrent - start / frequency;
if (time >= 0.0005)
break;
}
Чтобы не было загрузки проца - надо в for вставить halt-ы
лол?
чета помоему невтему....
Лол, чувак. Нет, оно, конечно, будет работать, и даже, возможно, не очень сильно промахиваться. Но вообще правильнее поступать наоборот - вычислять long, соответствующий данному промежутку, а все сравнения делать уже с целочисленными значениями.
я верил в вас, что вы справитесь с такой сложной задачей.
Оставить комментарий
london
Можно ли измерить таковой в Delphi? И вообще, возможно ли это под виндой? А если возможно, то как?