Главная страница
    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.041 c
3-1128587181
msguns
2005-10-06 12:26
2005.11.20
Access. JOIN более 2 таблиц


2-1130606810
Del_programmer
2005-10-29 21:26
2005.11.20
canvas


14-1130409778
_xroot
2005-10-27 14:42
2005.11.20
Указатель на папку


14-1130305048
SergP.
2005-10-26 09:37
2005.11.20
СПАМ. Что делать?


14-1130413226
Jeer
2005-10-27 15:40
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский