Код
function rdtsc naked() as ulongint
asm
rdtsc
ret
end asm
end function
dim c as integer = 1
dim as integer ticks=rdtsc()
c+=1
?rdtsc()-ticks
вы наверное заметили, что простое прибавление единицы уж как-то съедает много тактов. данная команда возвращает число тактов не только для вашего приложения, но и других параллельно работающих. система ведь многозадачная. почитайте про команду rdtsc и всё поймёте.
но все-равно, для очень хорошо оптимизированного кода, разница при измерении будет, даже с такой командой в которой есть погрешности.
рекомендуется делать несколько измерений, и небольшими участками кода.
погрешность получается из-за самого FreeBasic, потому, что в нем нет inline функций, которые разворачиваются прямо в код. соответственно при повторном вызове, такты съедаются на call.