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

Вниз

asm   Найти похожие ветки 

 
Ильичев С.А. ©   (2005-10-20 13:21) [0]

Скажите пожалуйста что быстрее.
Или как-то по другому можно?

1.

 function DivTwoAndCeil(const X: Integer): Integer;
 begin
   Result := X div 2;
   if X mod 2 > 0 then inc(Result);
 end;

2.

 function DivTwoAndCeil(X: Integer): Integer; assembler;
 asm
   MOV EAX, X
   MOV ECX, EAX
   SHR EAX, 1
   AND ECX, 1
   ADD EAX, ECX
   MOV Result, EAX
 end;


 
Digitman ©   (2005-10-20 13:33) [1]

function DivTwoAndCeil(X: Integer): Integer;
asm
  AND EAX, 1
end;


 
Digitman ©   (2005-10-20 13:38) [2]

пардон ...

из-за имени ф-ции смысл ее затеи понятен не сразу ..

function DivTwoAndCeil(X: Integer): Integer;
asm
 SHR EAX, 1 //или SAR EAX, 1 при необходимости соблюсти знак
 JNC @@exit
 INC EAX
@@exit:
end;


 
Anatoly Podgoretsky ©   (2005-10-20 13:38) [3]

Быстрее не вызывать функцию


 
Ильичев С.А. ©   (2005-10-20 13:40) [4]

2 Digitman ©   (20.10.05 13:33) [1]
не то =)

мне надо
f(0) = 0
f(1) = 1
f(2) = 1
f(3) = 2
f(4) = 2
f(5) = 3
f(6) = 3
...


 
Digitman ©   (2005-10-20 13:52) [5]


> Ильичев С.А. ©   (20.10.05 13:40) [4]


как это "не то" ?)

убедись сам :

procedure TForm1.Button3Click(Sender: TObject);
var i: integer;
begin
 for i := 0 to 6 do
   memo1.Lines.add(inttostr(divtwoandceil(i)));
end;


 
Ильичев С.А. ©   (2005-10-20 14:05) [6]

2 Digitman ©   (20.10.05 13:52) [5]
за [2] большое спасибо
а в [4] первую срочку внимательнее


 
Anatoly Podgoretsky ©   (2005-10-20 14:15) [7]

Y := X DIV 2 + X MOD 2;


 
MBo ©   (2005-10-20 14:35) [8]

Inc(X)
X div 2


 
evvcom ©   (2005-10-20 14:38) [9]

asm
 SHR EAX, 1
 ADC EAX, 0
end;


 
Cyberdeamon   (2005-10-31 23:22) [10]

<CO DE>


 
Cyberdeamon   (2005-10-31 23:23) [11]

Удалено модератором


 
icWasya ©   (2005-11-01 09:31) [12]

function DivTwoAndCeil(const X: Integer): Integer;
begin
  Result := (X+1) div 2;
end;


 
Fenik ©   (2005-11-01 17:34) [13]

function DivTwoAndCeil(const X: Integer): Integer;
begin
Result := (X+1) shr 1;
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.036 c
2-1131185953
Зм1й
2005-11-05 13:19
2005.11.20
Адекватная реакция :)


3-1128085302
ZedeS
2005-09-30 17:01
2005.11.20
Быстая работа с большой базой


2-1130757178
alpine
2005-10-31 14:12
2005.11.20
Не пойму в чём дело ?!


14-1130493355
konda
2005-10-28 13:55
2005.11.20
Очередной "конец света"


4-1126889831
ArtemESC
2005-09-16 20:57
2005.11.20
свойства другого окна





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