Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.19;
Скачать: CL | DM;

Вниз

Инструкции сопроцессора. FWAIT Ожидание. Тест(мой)   Найти похожие ветки 

 
Vlad Oshin ©   (2008-08-28 17:52) [0]


procedure TForm1.Button1Click(Sender: TObject);
var
 f,eps:Extended;
 i,j,strt,nd, N,N2:Cardinal;

 //как объявлена в unit System;
function Sqrt1(const X: Extended): Extended;
asm
  FLD     X
  FSQRT
  FWAIT
end;

 //Выдрал  FWAIT
function Sqrt2(const X: Extended): Extended;
asm
  FLD     X
  FSQRT
end;

begin
  f:=25;
  eps:=0.00000001;
  N:=429496700;
  N2:=3;

  strt:=gettickcount;
  for j:=1  to N2 do
   for I := 1 to N do
   begin
    if (Sqrt2(f)-5)>eps then memo1.Lines.Add("2");
   end;
  nd:=gettickcount;
  memo1.Lines.Add("Sqrt2="+inttostr(nd-strt));

  strt:=gettickcount;
  for j:=1  to N2 do
   for I := 1 to N do
   begin
    if (Sqrt1(f)-5)>eps then memo1.Lines.Add("1");
   end;
  nd:=gettickcount;
  memo1.Lines.Add("Sqrt1="+inttostr(nd-strt));
end;

пробовал по-разному.
Функции местами менял(типа, кэш может какой)
Колво прогонов
Без сравнения пробовал
Вкл/выкл оптимизацию

никакой разницы (даже иногда с Wait быстрее, пол-процента)
почему?


 
Renegat ©   (2008-08-28 18:01) [1]

FWAIT нужен исключительно в целях совместимости со старыми процами.
Он просто обеспечивает синхронизацию CPU и FPU.


 
oldman ©   (2008-08-28 18:03) [2]


> Vlad Oshin ©   (28.08.08 17:52)  


Влад, че с тобой последний год творится?


 
Renegat ©   (2008-08-28 18:10) [3]

> [1] Renegat ©   (28.08.08 18:01)

ЗЫ. А в современных ЦП такая синхронизация автоматизирована: выполняй-не выполняй WAIT, разницы не будет.
Возможно, полпроцента образуются от лучшей забивки в кэш (скажем, случайного выравнивания на 4байтную границу. проверять предположение лень).
Или просто из-за погрешности измерений.


 
Anatoly Podgoretsky ©   (2008-08-28 19:21) [4]

> oldman  (28.08.2008 18:03:02)  [2]

Может это не он.


 
Vlad Oshin ©   (2008-08-29 09:13) [5]


> FWAIT нужен исключительно в целях совместимости со старыми
> процами.
> Он просто обеспечивает синхронизацию CPU и FPU

вот я это и прочитал и решил проверить, насколько она замедляет
инструкция же есть!,
хотя бы распознать, что ничего не надо делать, время же нужно, наверное


> Может это не он

ага, Николя Бурбаки я :)


 
Alex Konshin ©   (2008-08-29 11:01) [6]

Там конвейер (и не один). Потому время на распознавание обычно не влияет на время выполнения.



Страницы: 1 вся ветка

Текущий архив: 2008.10.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
3-1208198634
Maxim
2008-04-14 22:43
2008.10.19
ADO в WebSnap


15-1219338554
Sergey Masloff
2008-08-21 21:09
2008.10.19
Несколько вакансий. Москва. Delphi, Oracle. Не гуру


1-1200679747
ilkz
2008-01-18 21:09
2008.10.19
Приложение и DLL


2-1218701003
Нов_и_чок
2008-08-14 12:03
2008.10.19
преобразование длинных имен файлов Windows в DOS


2-1221136125
DJones
2008-09-11 16:28
2008.10.19
Использование многострочных hint в Дельфи