El 30/11/2012 09:07 a.m., Andi Jahja escribió: > Yes :-) > > For an easy sample, I think sometimes ppl forget that we have iif() > function. > > The following snippet: > > /** prog1.prg **/ > procedure main > > LOCAL A > > IF A == 1 > b := 1 > ELSE > b := 2 > ENDIF > > // requires: 12 pCodes > /** end **/ > > But (with same functionality): > > /** prog2.prg **/ > procedure main > > LOCAL A, B := IIF( A == 1, 1, 2 ) > > > // requires: 11 pCodes > /** end **/ > > We gain 1 pCode from the above. Imagine we have 1000 'IF's in some > modules -> we'll save 1000 CPU cycles :-) > > > Andi
This is not correct asumption. Not all the pcodes writed are executed. /** prog1.prg **/ procedure main LOCAL A:=1,B IF A == 1 b := 1 ELSE b := 2 ENDIF Using: Harbour prog1 /n Generate a program with 14 pcodes Executing: when A := 1 Execute 12 pcodes when A := 2 Execute 11 pcodes Using: Harbour prog1 /l /n Generate a program with 10 pcodes Executing: when A := 1 Execute 9 pcodes when A := 2 Execute 8 pcodes /** prog2.prg **/ procedure main LOCAL A := 1, B := IIF( A == 1, 1, 2 ) Using: Harbour prog2 /n Generate a program with 12 pcodes Executing: when A := 1 Execute 11 pcodes when A := 2 Execute 10 pcodes Using: Harbour prog2 /l /n Generate a program with 11 pcodes Executing: when A := 1 Execute 10 pcodes when A := 2 Execute 9 pcodes /** prog3.prg **/ procedure main LOCAL A := 1, B B := IIF( A == 1, 1, 2 ) Using: Harbour prog3 /n Generate a program with 13 pcodes Executing: when A := 1 Execute 12 pcodes when A := 2 Execute 11 pcodes Using: Harbour prog3 /l /n Generate a program with 11 pcodes Executing: when A := 1 Execute 10 pcodes when A := 2 Execute 9 pcodes /** prog4.prg **/ procedure main LOCAL A:=1,B IF A == 1;b := 1;ELSE;b := 2;ENDIF Using: Harbour prog4 /n Generate a program with 12 pcodes Executing: when A := 1 Execute 11 pcodes when A := 2 Execute 10 pcodes Using: Harbour prog4 /l /n Generate a program with 10 pcodes Executing: when A := 1 Execute 9 pcodes when A := 2 Execute 8 pcodes |prog1 /n |prog1 /n/l|prog2 /n |prog2 /n/l|prog3 /n |prog3 /n/l|prog4 /n |prog4 /n/l| total|14 pcodes|10 pcodes |12 pcodes|11 pcodes |13 pcodes|11 pcodes |12 pcodes|10 pcodes | A==1 |12 pcodes| 9 pcodes |11 pcodes|10 pcodes |12 pcodes|10 pcodes |11 pcodes| 9 pcodes | A==2 |11 pcodes| 8 pcodes |10 pcodes| 9 pcodes |11 pcodes| 9 pcodes |10 pcodes| 8 pcodes | ------------------------------------------------------------------------------------- When compile without /l generate one PCODE for line with code and one PCODE for initialize counters of line. prog1 and prog4 save one pcode because assign integer to local use 1 pcode, but if assign other value prog1 and prog4 add one pcode Walter Negro ------------------------------------------------------------------------------ Keep yourself connected to Go Parallel: TUNE You got it built. Now make it sing. Tune shows you how. http://goparallel.sourceforge.net _______________________________________________ xHarbour-developers mailing list xHarbour-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xharbour-developers