Talk:Rosetta Code/(Strictly) equal in Rexx: Difference between revisions
Walterpachl (talk | contribs) (Performance comparisons of Rexx' equal operators) |
(Add results from Mac OS X) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Rexx has two comparison operators (for testing equality) |
Rexx has two comparison operators (for testing equality) |
||
<pre> |
|||
strictly equal a==b tests the values byte for byte, so '1'==' 01e0 ' -> 0 (false) |
strictly equal a==b tests the values byte for byte, so '1'==' 01e0 ' -> 0 (false) |
||
equal a=b tests the values more generously |
equal a=b tests the values more generously |
||
it strips leading and trailing blanks and, if both values are |
it strips leading and trailing blanks and, if both values are |
||
numbers compares them arithmetically (observing the Numeric Digits setting) |
|||
so '1' |
so '1'=' 01e0 ' -> 1 (true) |
||
⚫ | |||
I performed a little performance test on TSO. |
I performed a little performance test on TSO. |
||
⚫ | |||
<lang rexx> |
|||
⚫ | |||
* Compare the performance of equal vs. strictly equal |
* Compare the performance of equal vs. strictly equal |
||
* 05.07.2012 Walter Pachl |
* 05.07.2012 Walter Pachl |
||
Line 33: | Line 35: | ||
Say right(cnt.0,5) right(cnt.1,5), |
Say right(cnt.0,5) right(cnt.1,5), |
||
format(te,2,8) format(tse,2,8) format((100*(te-tse)/te),3,8)'%' |
format(te,2,8) format(tse,2,8) format((100*(te-tse)/te),3,8)'%' |
||
End |
End </lang> |
||
⚫ | |||
The results: |
The results: |
||
<pre> |
|||
Interpreter: |
Interpreter: |
||
eqtest on Rexx Version REXX370 3.48 01 May 1992 |
eqtest on Rexx Version REXX370 3.48 01 May 1992 |
||
Line 54: | Line 55: | ||
99894 106 0.00984500 0.01306300 -32.68664300% |
99894 106 0.00984500 0.01306300 -32.68664300% |
||
99894 106 0.01005300 0.01423700 -41.61941710% |
99894 106 0.01005300 0.01423700 -41.61941710% |
||
</pre> |
|||
As I was part of the Compiler Development Team in the former IBM Lab Vienna |
As I was part of the Compiler Development Team in the former IBM Lab Vienna |
||
Line 59: | Line 61: | ||
You are invited to test this on your platform with your Rexx! |
You are invited to test this on your platform with your Rexx! |
||
--[[User:Walterpachl|Walterpachl]] 07:28, 5 July 2012 (UTC) |
--[[User:Walterpachl|Walterpachl]] 07:28, 5 July 2012 (UTC) |
||
Here the result on my pretty old desktop Windows: |
|||
<pre> |
|||
eqtest on Rexx Version REXX-ooRexx_4.1.1(MT) 6.03 16 May 2012 |
|||
Hits Misses test = Test == == improvement |
|||
99896 104 0.12500000 0.12500000 0.00000000% |
|||
99896 104 0.12500000 0.10900000 12.80000000% |
|||
99896 104 0.12500000 0.14100000 -12.80000000% |
|||
99896 104 0.12500000 0.10900000 12.80000000% |
|||
99896 104 0.12500000 0.12500000 0.00000000% |
|||
</pre> |
|||
--[[User:Walterpachl|Walterpachl]] 16:13, 5 July 2012 (UTC) |
|||
The following results are from a MacBook Pro: |
|||
* '''Processor:''' 2.66 GHz Intel Core 2 Duo |
|||
* '''Memory:''' 4 GB |
|||
* '''Software:''' Mac OS X Lion 10.7.4 |
|||
'''ooRexx:''' |
|||
<pre> |
|||
eqtest on Rexx Version REXX-ooRexx_4.1.1(MT) 6.03 5 Jun 2011 |
|||
Hits Misses test = Test == == improvement |
|||
99896 104 0.11199600 0.10708800 4.38229937% |
|||
99896 104 0.11749800 0.10943300 6.86394662% |
|||
99896 104 0.11566000 0.13758600 -18.95728860% |
|||
99896 104 0.11635800 0.12008500 -3.20304577% |
|||
99896 104 0.19133300 0.18279400 4.46289976% |
|||
</pre> |
|||
'''Regina:''' |
|||
<pre> |
|||
eqtest on Rexx Version REXX-Regina_3.5(MT) 5.00 31 Dec 2009 |
|||
Hits Misses test = Test == == improvement |
|||
99901 99 0.07463500 0.06828200 8.51209218% |
|||
99901 99 0.05713800 0.06026000 -5.46396444% |
|||
99901 99 0.06151100 0.07270400 -18.19674530% |
|||
99901 99 0.07320100 0.08063500 -10.15559900% |
|||
99901 99 0.07326500 0.07511300 -2.52235037% |
|||
</pre> |
|||
--[[User:Alansam|Alansam]] 16:44, 5 July 2012 (UTC) |
Latest revision as of 16:44, 5 July 2012
Rexx has two comparison operators (for testing equality)
strictly equal a==b tests the values byte for byte, so '1'==' 01e0 ' -> 0 (false) equal a=b tests the values more generously it strips leading and trailing blanks and, if both values are numbers compares them arithmetically (observing the Numeric Digits setting) so '1'=' 01e0 ' -> 1 (true)
I performed a little performance test on TSO. <lang rexx>/* REXX ***************************************************************
- Compare the performance of equal vs. strictly equal
- 05.07.2012 Walter Pachl
- /
Parse Version v Say 'eqtest on Rexx Version' v Say ' Hits Misses test = Test == == improvement' Call random 1,10,12345 /* set seed */ Do i=1 To 100000
x.i=random() End
Do rep=1 To 5
cnt.=0 Call time 'R' Do i=1 To 100000 If x.i=999 Then cnt.1=cnt.1+1 Else cnt.0=cnt.0+1 End cnt.=0 te=time('R') Do i=1 To 100000 If x.i==999 Then cnt.1=cnt.1+1 Else cnt.0=cnt.0+1 End tse=time('E') Say right(cnt.0,5) right(cnt.1,5), format(te,2,8) format(tse,2,8) format((100*(te-tse)/te),3,8)'%' End </lang>
The results:
Interpreter: eqtest on Rexx Version REXX370 3.48 01 May 1992 Hits Misses test = Test == == improvement 99894 106 0.15227900 0.14603100 4.10299516% 99894 106 0.14801500 0.14583200 1.47485052% 99894 106 0.15465700 0.15261200 1.32228092% 99894 106 0.15660000 0.14936200 4.62196679% 99894 106 0.15060800 0.17170400 -14.00722410% Compiled Rexx: eqtest on Rexx Version REXXC370 3.48 23 Dec 1999 Hits Misses test = Test == == improvement 99894 106 0.01011300 0.01730900 -71.15593790% 99894 106 0.00983700 0.01328100 -35.01067400% 99894 106 0.00973800 0.01293300 -32.80961180% 99894 106 0.00984500 0.01306300 -32.68664300% 99894 106 0.01005300 0.01423700 -41.61941710%
As I was part of the Compiler Development Team in the former IBM Lab Vienna I am rather proud of my friends' achievement!
You are invited to test this on your platform with your Rexx! --Walterpachl 07:28, 5 July 2012 (UTC)
Here the result on my pretty old desktop Windows:
eqtest on Rexx Version REXX-ooRexx_4.1.1(MT) 6.03 16 May 2012 Hits Misses test = Test == == improvement 99896 104 0.12500000 0.12500000 0.00000000% 99896 104 0.12500000 0.10900000 12.80000000% 99896 104 0.12500000 0.14100000 -12.80000000% 99896 104 0.12500000 0.10900000 12.80000000% 99896 104 0.12500000 0.12500000 0.00000000%
--Walterpachl 16:13, 5 July 2012 (UTC)
The following results are from a MacBook Pro:
- Processor: 2.66 GHz Intel Core 2 Duo
- Memory: 4 GB
- Software: Mac OS X Lion 10.7.4
ooRexx:
eqtest on Rexx Version REXX-ooRexx_4.1.1(MT) 6.03 5 Jun 2011 Hits Misses test = Test == == improvement 99896 104 0.11199600 0.10708800 4.38229937% 99896 104 0.11749800 0.10943300 6.86394662% 99896 104 0.11566000 0.13758600 -18.95728860% 99896 104 0.11635800 0.12008500 -3.20304577% 99896 104 0.19133300 0.18279400 4.46289976%
Regina:
eqtest on Rexx Version REXX-Regina_3.5(MT) 5.00 31 Dec 2009 Hits Misses test = Test == == improvement 99901 99 0.07463500 0.06828200 8.51209218% 99901 99 0.05713800 0.06026000 -5.46396444% 99901 99 0.06151100 0.07270400 -18.19674530% 99901 99 0.07320100 0.08063500 -10.15559900% 99901 99 0.07326500 0.07511300 -2.52235037%
--Alansam 16:44, 5 July 2012 (UTC)