ПРЕДУПРЕЖДЕНИЕ
А вместо FCOMIP / JA - блок
|
FCOMP
FSTSW
TEST
AX, 256 or 16384 //0<= y*log2(x) ?
JZ @Reverse //Нет, случай со взятием
обратного значения
|
ПРЕДУПРЕЖДЕНИЕ
Вдобавок в этом случае изменяется
регистр EAX.
|
Результаты тестирования отражены на графиках:
Рисунок 2. Временные затраты: New_Power – новая функция, Power – из состава RTL Borland Delphi.
Подпись X-0.511 на оси абсцисс отражает тот факт, что
при проведении испытаний брались значения целые значения X, к которым затем
прибавлялось число 0.511, чтобы гарантировать, что основание степени – число
нецелое (т.е. чтобы рассматривать по возможности общий случай).
Черная линия поверх красного набора – сглаженные
временные затраты функции Power, фиолетовая поверх синего – функции New_Power.
Замеры временных затрат производились с помощью
инструкции RDTSC (процессоры начиная с Pentium):
function time:int64; //Вспомогательная
функция для подсчета времени работы
asm rdtsc end;
|
и далее в коде
t:=time();
...
writeln(time()-t);
|
RDTSC возвращает в регистровой паре EDX:EAX число
тактов процессора, прошедших с момента последнего сброса (reset). Машинный код
инструкции – 0Fh, 31h.
Относительная погрешность ведет себя на удивление
стабильно, изменяясь в пределах от 0 до 0,0040%. Поэтому достаточно
представительным множеством значений аргумента является, к примеру, промежуток
(0, 1000).
Рекомендуем скачать другие рефераты по теме: педагогические рефераты, реферат машини.
Предыдущая страница реферата |
1
2
3
4
5
6
7
8
9
10
11 |
Следующая страница реферата