FreeBasic
Главная
Вход
Регистрация
Пятница, 19.04.2024, 05:17Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Исходники » измерение выполнения участков кода
измерение выполнения участков кода
electrikДата: Вторник, 14.10.2014, 15:26 | Сообщение # 1
Полковник
Группа: Друзья
Сообщений: 180
Репутация: 3
Статус: Offline
Код
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.


Сообщение отредактировал electrik - Вторник, 14.10.2014, 15:44
 
haavДата: Вторник, 14.10.2014, 17:26 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Погонял код с десяток раз. С помощью этой команды процессора можно генератор случайных чисел сотворить biggrin Никогда не угадаешь, что она выдаст. Не знаю как она для вычислений, все таки из-за того, что она считает такты всех запущенных процессов, результат может сильно колебаться. Никогда не знаешь какие службы и с какой периодичностью хавают такты процессора ("рандомный винегрет").

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
electrikДата: Среда, 15.10.2014, 01:07 | Сообщение # 3
Полковник
Группа: Друзья
Сообщений: 180
Репутация: 3
Статус: Offline
поповоду рандомности ты прав, в общем то про эту команду так и пишут, что она используется не только по назначению, но и как генератор энтропии. не то чтоб при помощи нее генерят рандомные числа, но на основе этих чисел пишут алгоритмы.
 
Форум » Freebasic » Исходники » измерение выполнения участков кода
  • Страница 1 из 1
  • 1
Поиск: