C optimalizalas
Andras Tantos
andras at tantosonline.com
Thu Oct 27 23:56:28 CEST 2005
Hali!
Ez roppant erdekes. Ezek szerint az alabbi kod:
cfg.hangup_status=ACTIVE;
if(!cfg.out_type){
PORT3_OC1B=1;
}
else{
settimer(TMR_MONOSTABLE,cfg.out_type);
}
nagyobb kellene legyen, mint ez:
void SetHupStatusAct() {
cfg.hangup_status=ACTIVE;
}
....
SetHupStatusAct();
if(!cfg.out_type){
PORT3_OC1B=1;
}
else{
settimer(TMR_MONOSTABLE,cfg.out_type);
}
Biztos vagy ebben? Tudsz esetleg assambly listat kuldeni az (eredeti)
kodreszletekrol? Mi a tipusa a cfg.hangup_status-nak? Lehet, hogy 32-bites?
De meg ez se eleg magyarazat, ugy erzem... Meg azt tudom elkepzelni, hogy
valami csalafinta (bit-mezok, union) trukkozes miatt a ket kodreszlet meg se
egeszen ugyanazt csinalja.
Udv,
Tantos Andras
----- Original Message -----
From: "Fuzesi Arnold" <arno at externet.hu>
To: <elektro at tesla.hu>; <Retro at lists.tmp.hu>
Sent: Thursday, October 27, 2005 12:15 PM
Subject: C optimalizalas
Belefutottam egy jopofa dologba:
Az alabbi jocskan _rovidebb_ kodot eredmenyez:
if(!cfg.out_type){
PORT3_OC1B=1;
cfg.hangup_status=ACTIVE;
}
else{
if(cfg.out_retrigger){
settimer(TMR_MONOSTABLE,cfg.out_type);
cfg.hangup_status=ACTIVE;
}else{
settimer(TMR_MONOSTABLE,cfg.out_type);
cfg.hangup_status=ACTIVE;
}
}
mint ez:
cfg.hangup_status=ACTIVE;
if(!cfg.out_type){
PORT3_OC1B=1;
}
else{
settimer(TMR_MONOSTABLE,cfg.out_type);
}
Elvben funkcionalisan megegyeznek.
Csak egy jopofa pelda akart lenni, hogy forditok mennyire maskepp
gondolkodnak mint az ember, és bizonyos komplexitas felett mennyire nincs
eselyünk.
Azert lett rovidebb mert tök mashol hasznaltam azonos kodreszletet(ket),
amit a cross-call optimalizacio megtalalt, es csinalt egy par kis közös
fuggvenyt
Nezegettem a kodot, tele van cross-call hivassal... Nagyon ugyesen
megtalalja a kozos kodreszeket. Ott ahol nekem fel sem tűnne/
lustaságból/átláthatóság miatt nem kezdenék függvényhívást írni.
Arnold
-----------------------------------
Szponzorunk: http://tonerbolt.hu/
More information about the Elektro
mailing list