Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.10.19;
Скачать: [xml.tar.bz2];

Вниз

Инструкции сопроцессора. 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
2-1221156958
smartleds
2008-09-11 22:15
2008.10.19
Господа подскажите как програмно выделить какую либо позицию


2-1221475446
Demo_nik
2008-09-15 14:44
2008.10.19
координаты ячейки BDE


2-1221045757
Нов_и_чок
2008-09-10 15:22
2008.10.19
Системные иконки Shell32.dll


15-1219912790
ищущий
2008-08-28 12:39
2008.10.19
Должностная инструкция инженера ИВТ


6-1194270834
andreoman
2007-11-05 16:53
2008.10.19
программно поменять мак-адрес (MAC) сетевой карточки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский