Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Что будет быстрее>


Автор: Ak47black 20.8.2007, 14:41
Привет всем.
Вообшем как вы думаете какой код будет быстрей (если можно поясните) или они одно и тоже.
Вот такой 
Код

if ( (VLeft = left)and(VTop = top)and(VRight = right)and(VBottom = bottom)

Или вот такой
Код

if (VLeft = left) then
  if  ((VTop = top)and(VRight = right)and(VBottom = bottom))

 smile 
Все переменные Integer.
Как вообше он будет сравнивать ?
Будет-ли по разному скомпилировано на Cи и на Delphi ?

Автор: Rennigth 20.8.2007, 14:49
Ak47black, если не стоит в опциях проекта галка, вроде"Complete boolean eval", то одинаково работать будет. При False первого условия дальше проверяться не будет.

Добавлено через 4 минуты и 48 секунд
Хотя ща посмотрим, как оптимизатор поступит с кодом...

Добавлено через 5 минут и 31 секунду
Цитата(Ak47black @  20.8.2007,  14:41 Найти цитируемый пост)
Будет-ли по разному скомпилировано на Cи и на Delphi ? 

В си не силен, но скорее всего также как в делфи smile

Автор: Ak47black 20.8.2007, 14:56
Если есть кто в дровах силён то как будет если в DDK компилить?

Добавлено через 4 минуты и 5 секунд
Цитата

Хотя ща посмотрим, как оптимизатор поступит с кодом...

А ты под какой тулзой смотришь DeDe OllyDbg или чтото другое?

Автор: Rennigth 20.8.2007, 15:02
И что мы видим? B там и там вот это smile 
Код

00457EE9 8BC3             mov eax,ebx
00457EEB E8CC63FFFF       call TCustomForm.GetLeft
00457EF0 3BF0             cmp esi,eax
00457EF2 7537             jnz $00457f2b
00457EF4 8BC3             mov eax,ebx
00457EF6 E8E163FFFF       call TCustomForm.GetTop
00457EFB 3BF8             cmp edi,eax
00457EFD 752C             jnz $00457f2b
00457EFF 8D542404         lea edx,[esp+$04]
00457F03 8BC3             mov eax,ebx
00457F05 8B08             mov ecx,[eax]
00457F07 FF5144           call dword ptr [ecx+$44]
00457F0A 3B6C240C         cmp ebp,[esp+$0c]
00457F0E 751B             jnz $00457f2b
00457F10 8D542414         lea edx,[esp+$14]
00457F14 8BC3             mov eax,ebx
00457F16 8B08             mov ecx,[eax]
00457F18 FF5144           call dword ptr [ecx+$44]
00457F1B 8B442420         mov eax,[esp+$20]
00457F1F 3B0424           cmp eax,[esp]
00457F22 7507             jnz $00457f2b


Сравнивал вот это:
Код

var
  lleft, ltop, lright, lbottom: Integer;
begin
//  if (lleft = Left) and (ltop = Top) and (lright = ClientRect.Right) and
//    (lbottom = ClientRect.Bottom) then
  if (lleft = Left) then
    if (ltop = Top) and (lright = ClientRect.Right) and
    (lbottom = ClientRect.Bottom) then


Добавлено @ 15:03
Цитата(Ak47black @  20.8.2007,  14:56 Найти цитируемый пост)
А ты под какой тулзой смотришь DeDe OllyDbg или чтото другое? 

View CPU smile

Автор: sentry 20.8.2007, 15:03
Цитата(Ak47black @  20.8.2007,  16:26 Найти цитируемый пост)
А ты под какой тулзой смотришь DeDe OllyDbg или чтото другое

Ctrl+Alt+C

Автор: Ak47black 20.8.2007, 15:33
Rennigth, 
sentry, 
Спасиб +.

Автор: Coder 21.8.2007, 02:01
Цитата(Ak47black @  20.8.2007,  22:41 Найти цитируемый пост)
Будет-ли по разному скомпилировано на Cи и на Delphi ?

Все зависит от конкретного компилятора. Так что я бы не стал полагатся на результаты полученные в Делфи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)