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

Reply via email to