PDA

View Full Version : [GENERICO] scelta corretta


blackskop
25-04-2009, 21:57
Tra questi due costrutti


if (1 == 2)
;
else if (1 == 3)
;




if (1 == 2)
;
if (1 == 3)
;



a livello prestazionale e di occupazione di memoria, qual è quello da preferire? Con quale compilatore/linguaggio?

cdimauro
26-04-2009, 06:33
Supponendo che tu non esegua confronti con entrambi gli argomenti come costanti, nel primo caso viene eseguito il secondo controllo se e solo se fallisce il primo, mentre nel secondo caso i due controlli vengono eseguiti sempre.

Quindi è da preferire il primo.

blackskop
26-04-2009, 06:53
Nell'esempio ho volutamente fatto fallire entrambi i test proprio perchè vorrei capire se i compilatori usano approcci diversi per mappare quei costrutti.

Per esempio, nel primo caso un compilatore, per mappare la sequenza if else if, potrebbe utilizzare un albero.

Nel secondo caso invece potrebbe usare due alberi separati perchè sintatticamente i due if non fanno parte della stessa sequenza.

enter
26-04-2009, 07:01
Nessuno dei due ;)

blackskop
26-04-2009, 07:08
Nessuno dei due ;)

Alternative?

cdimauro
26-04-2009, 08:20
Nell'esempio ho volutamente fatto fallire entrambi i test proprio perchè vorrei capire se i compilatori usano approcci diversi per mappare quei costrutti.

Per esempio, nel primo caso un compilatore, per mappare la sequenza if else if, potrebbe utilizzare un albero.

Nel secondo caso invece potrebbe usare due alberi separati perchè sintatticamente i due if non fanno parte della stessa sequenza.
Se lasci il codice esattamente come hai fatto, quindi con entrambe le condizioni che vengo valutate come false, un buon compilatore non produce nessun codice per i due if.

rеpne scasb
26-04-2009, 08:43

blackskop
26-04-2009, 13:27
Ok, mettiamoci due variabili che a runtime rendano le condizioni false.

cdimauro
26-04-2009, 14:52
In tal caso non ci sarà nessuna differenza fra i due esempi.

rеpne scasb
26-04-2009, 14:59