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
[email protected]
https://lists.sourceforge.net/lists/listinfo/xharbour-developers