Avatar billede mbsnet Nybegynder
27. juni 2006 - 12:53 Der er 10 kommentarer og
1 løsning

Grundlæggende: Hvad er bedst / hurtigst (til de erfarne)

HVAD ER HURTIGST/BEDST HVIS MAN GENTAGER MANGE GANGE

if (width>0)
and (height>0)
  and (color<>clRed)
  and (x>0)
    and (y>0) then {handling};

ELLER
  if (width>0) then
    if (height>0) then
    if (color<>clRed) then
      if (x>0) then
      if (y>0) then {handling};

(min teori er at den ikke påbegynder de andre IF efter den finder en som er false ???)
Avatar billede martinlind Nybegynder
27. juni 2006 - 13:00 #1
det er ihvert tilfælde sådan det er hvis du bruger AND
Avatar billede mbsnet Nybegynder
27. juni 2006 - 13:02 #2
det vil sige AND er hurtigst ?

- jeg har lige en mere her:
vil exe-filen blive større,
hvis man tilføjer units under USES,
uden at man i virkeligheden benytter
funktioner/procedurer fra dem ?
Avatar billede kroning Nybegynder
27. juni 2006 - 13:05 #3
Jeg lavede lige en test hvor jeg kørte de 2 muligheder igennem 1 milion gange og der var ingen forskel på den tid det tog.
Avatar billede mbsnet Nybegynder
27. juni 2006 - 13:07 #4
ok kan man så gå ud fra det er underordnet altid,- uanset antal "parametre" (if's)
Avatar billede martinlind Nybegynder
27. juni 2006 - 13:08 #5
kroning >> sikker fordi compileren bruger samme måde :), det kan du se på maskinkoden af din test.

bmsnet >> kommer an på din unit kode og din compiler.
Avatar billede mbsnet Nybegynder
27. juni 2006 - 13:13 #6
hvad nu hvis hvis jeg har en unit som bruger eks:  winProcs,winSock,windows,forms,sysUtils,classes,winInet;
og som indholder rimelig tunge funtioner til at redigere tekst osv
(jeg bruger altid delphi 6)
Avatar billede yates Nybegynder
27. juni 2006 - 14:17 #7
Du kunne overveje:
if (Width and height and ... and (color<>clRed) then ...

Så slipper du (dvs din computer) for lidt af bøvlet.
Hvis du desuden kan se at der er EN af betingelserne som ofte er false i forhold til de andre så kan det være hurtigere at bruge den i den første if...then. Lad os for eksempel sige Height meget oftere er kilden til false. Så kan det være fornuftigt bare at bruge:
if (Height) then
if (alle de andre sager) then ...

Y.
Avatar billede mbsnet Nybegynder
27. juni 2006 - 16:36 #8
ja ok de skal komme i den rigtige rækkefølge..

hvad betyder det med:  if (Width and height and ...
kan man også spare noget med int's som man kan med booleans ?

hvis i lige svarer, får i points
Avatar billede arne_v Ekspert
28. juni 2006 - 03:00 #9
Delphi kan køre i 2 modes:

med short circuit evaluation - det er default - kan eksplict enables med {$B-}

uden short circuit evaluation - kan eksplict enables med {$B+}

med short circuit evaluation skal de 2 stykker kode gøre præcis det samme

uden short circuit evaluation vil den sidste kode være hurtigere (men der er ligesom
ikke nogen grund til at slå short circuit evaluation fra og så skrive den kode)
Avatar billede mbsnet Nybegynder
28. juni 2006 - 13:11 #10
ok ja, for det er jo rart at vide hvordan den håndterer det man skriver, og at der forskellige måder at gøre det på. Jeg prøver at lægge en standard at arbejde udfra, uanset om det er det ene sprog eller det andet. fremover vil jeg kigge mere efter prioritet (om en IF er mere betinget end en anden)  - :)

- post lige som SVAR i stedet, så i kan få points....
Avatar billede mbsnet Nybegynder
20. august 2007 - 21:45 #11
lukket.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester