Главная страница
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.49 MB
Время: 0.049 c
4-1127292865
Denizzz
2005-09-21 12:54
2005.11.20
Окно приложения прижать к панели задач (справа/слева)


2-1131269512
Максим
2005-11-06 12:31
2005.11.20
"Тихая" установка сервиса


1-1130321591
Prohodil Mimo
2005-10-26 14:13
2005.11.20
Как добавлять VCL (Win32) компоненты в Delphi 2005?


6-1123706619
Trojan_nt
2005-08-11 00:43
2005.11.20
Помогите создать статистику DSN Инета


2-1131111375
San1
2005-11-04 16:36
2005.11.20
Как программно открыть файл PDF. txt, doc и т. д.