1. or vs. plus

-- shouldn't these have identical results?
-- if not, there's an optimization to be had, right?

include get.e

atom timer, c1, c2, x

c1=0
c2=0

puts(1,"Timing 'or' vs. '+'\n\n")

puts(1,"or: ")
timer = time() + 3
while timer > time() do
	x = 475938 or 837298
	c1 += 1
end while
?c1

puts(1,"+ : ")
timer = time() + 3
while timer > time() do
	x = 475938 + 837298
	c2 += 1
end while
?c2

if c2 > c1 then
	printf(1,"\n'+' is %.03f times faster!",{c2/c1})
else
	printf(1,"\n'or' is %f.2 times faster!",{c1/c2})
end if

if wait_key() then end if



-=ck
"Programming in a state of Euphoria."
http://www.cklester.com/euphoria/

new topic     » topic index » view message » categorize

2. Re: or vs. plus

Oops...

> 
> if c2 > c1 then
> 	printf(1,"\n'+' is %.03f times faster!",{c2/c1})
> else
> 	printf(1,"\n'or' is %f.2 times faster!",{c1/c2})

That should be

      printf(1,"\n'or' is %.03f times faster!",{c1/c2})

-=ck
"Programming in a state of Euphoria."
http://www.cklester.com/euphoria/

new topic     » goto parent     » topic index » view message » categorize

3. Re: or vs. plus

or and + are not the same thing.

i.e. 
14 + 2 
is not equal to 
14 or 2

Why should the timing be identical?  Or am I missing what you're asking?

new topic     » goto parent     » topic index » view message » categorize

4. Re: or vs. plus

Evan Marshall wrote:
> 
> or and + are not the same thing.
> 
> i.e. 
> 14 + 2 
> is not equal to 
> 14 or 2
> 
> Why should the timing be identical?  Or am I missing what you're asking?

I was under the mistaken impression that they were exactly the same! But,
I've worked some actual numbers and it seems not so. heheh. oops. :)

-=ck
"Programming in a state of Euphoria."
http://www.cklester.com/euphoria/

new topic     » goto parent     » topic index » view message » categorize

5. Re: or vs. plus

cklester wrote:
> 
> Evan Marshall wrote:
> > 
> > or and + are not the same thing.
> > 
> > i.e. 
> > 14 + 2 
> > is not equal to 
> > 14 or 2
> > 
> > Why should the timing be identical?  Or am I missing what you're asking?
> 
> I was under the mistaken impression that they were exactly the same! But,
> I've worked some actual numbers and it seems not so. heheh. oops. :)

The 'or' and 'and' operations in the context you are thinking about refer to
Binary operations. That is, the operate on the bit values in the number and not
the numeric value of the number.

These functions below look at the corresponding bits in two values and result in
a new bit value fr each corresponding position.

or_bits()  -- if one or the other bit is 1, then the result is 1 otherwise 0.
and_bits() -- if both bits are 1, then the result is 1 otherwise 0.
xor_bits() -- if either bit, but not both, are 1 then the result is 1 else 0.

So given the numbers 14 and 2, we get the bit patterns 1110 and 0010
respectively.

     1110
or   0010
    ------
     1110  ( or_bits(14,2) => 14)


     1110
and  0010
    ------
     0010  ( and_bits(14,2) => 2 )

     1110
xor  0010
    ------
     1100  (xor_bits(14,2) => 12)

The not_bits() function works with one value and simply reverses the bits.

not  1110
    ------
     0001  (not_bits(14) => 1)

not  0010
    ------
     1101  (not_bits(2) => 13)


The not_bits() function is often used to 'invert' bits.

The or_bits() function is often used to 'turn on' bits.
  (E.G. in windowing librarys to set flags for controls etc...
    or_all({WS_CHILD, WS_SYSMENU, WS_BORDER})

The and_bits() function is often used to 'turn off' bits.
  (E.G. To turn off only the bits in B that are specified in A ...
      B = and_bits(B, not_bits(A))
  )

The xor_bits() function is often used to 'merge' bits.
  (Special properties of xor are that ...
      xor(xor(A,B), A) => B
      xor(xor(A,B), B) => A
      xor(A,A) => 0
   and it can be used to swap two values without using a temporary variable.

     -- Swap the values of A and B
     A = xor_bits(A,B)
     B = xor_bits(A,B)
     A = xor_bits(A,B)

   )


-- 
Derek Parnell
Melbourne, Australia
Skype name: derek.j.parnell

new topic     » goto parent     » topic index » view message » categorize

6. Re: or vs. plus

Hello everybody,

In electronics (which should be the same as computers).

1 + 1 = 0 with 1 to carry

1 or 1 = 1



Don Cole

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu