Главная страница
    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.45 MB
Время: 0.006 c
1-1200714304
Архип
2008-01-19 06:45
2008.10.19
Выборка


2-1221222546
savyhinst
2008-09-12 16:29
2008.10.19
Про DLL


15-1219645542
Slider007
2008-08-25 10:25
2008.10.19
С днем рождения ! 25 августа 2008 понедельник


4-1197982219
p_evghenii
2007-12-18 15:50
2008.10.19
Как при выключении Windows выполнить какое-либо приложение?


2-1221068460
YoungerDelphist
2008-09-10 21:41
2008.10.19
SQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский