@saxus: Vagy nem, mert a kódban távolabb van -> nehezebb karbantartani. Szerintem egy tömbindexelés átláthatóbb, mint egy egysoros if. Másfelől meg oda lehet írni kommentbe, hogy true esetén ez, false esetén az. Az nem fordul bele a kódba.@saxus: Egyébként az érdekesség kedvéért: kimérnéd nekem, hogy csak tisztán a random függvénynek milyen a sebessége ennyi elemre mondjuk 5 külön futtatás során?
program test6;
var
i: longint;
e: extended;
begin
for i := 0 to 1000000000 do
begin
e := random;
end;
end. root@Csabi:~/uasm# time ./test6
real 0m37.572s
user 0m36.510s
sys 0m0.000s
root@Csabi:~/uasm# time ./test6
real 0m37.709s
user 0m36.490s
sys 0m0.040s
root@Csabi:~/uasm# time ./test6
real 0m37.585s
user 0m36.520s
sys 0m0.000s
root@Csabi:~/uasm# time ./test6
real 0m38.196s
user 0m36.930s
sys 0m0.000s
root@Csabi:~/uasm# time ./test6
real 0m38.202s
user 0m36.900s
sys 0m0.030s
root@Csabi:~/uasm# time ./test6
real 0m37.529s
user 0m36.510s
sys 0m0.000s
Végül hatszor sikerült lefuttatni. Az az 5-6 tizedmásodperces belassulás nem tudom mi volt, talán valami processz kavart bele.
Viszont, ha már ott tartottam kibencsmárkoltam -O3 kapcsolóval is a Pascalos kódokat.root@Csabi:~/uasm# fpc -O3 ./test1.pas
Free Pascal Compiler version 2.6.2 [2013/03/17] for x86_64
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling ./test1.pas
test1.pas(3,8) Note: Local variable "l" is assigned but never used
Linking test1
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
10 lines compiled, 0.1 sec
1 note(s) issued
root@Csabi:~/uasm# strip --strip-all ./test1
root@Csabi:~/uasm# time ./test1
real 0m43.709s
user 0m42.320s
sys 0m0.010s
root@Csabi:~/uasm# fpc -O3 ./test2.pas
Free Pascal Compiler version 2.6.2 [2013/03/17] for x86_64
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling ./test2.pas
test2.pas(3,8) Note: Local variable "l" is assigned but never used
Linking test2
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
9 lines compiled, 0.1 sec
1 note(s) issued
root@Csabi:~/uasm# strip --strip-all ./test2
root@Csabi:~/uasm# time ./test2
real 0m50.013s
user 0m48.410s
sys 0m0.010s Így már eléggé egyértelmű, hogy a "táblázatos" verzió gyorsabb, mint az if-es.@kemi: C-ben lényegesen gyorsabb Faék kód C-ben mindig gyorsabb. Komplexebb kódnál ez már nem biztos.@kemi: de valóban úgy van, ahogy saxus mondja. Ha át akarod látni, netán módosítani akarod, mindig meg kell keresni annak a tömbnek a deklarációját. Nincs így, ld. a neki adott választ.@kemi: Legközelebb hozok egy rendes cipőt lézerezéshez, mert még mindig qrwára fáj a lábam. :P Nekem is kell majd egy új cipő, mert ennek szétment a talpa és szétmarta a lábujjaimat, mire hazaértem. Meg legközelebb sötét ruhát is hozni kell, mert világítottunk a sötétben. :P |