PackageDescription: SYSEXT-NumberParserTest
SYSEXT - Number Parser TestLast published: September 11, 2015 by 'nice'
Defines 2 Classes
Extends 2 Classes
NumberParserTest provide some tests for NumberParser.
Warning: some tests are expected to fail if SYSBUG-FloatConversion fixes are not applied.
This is because #asFloat and #asDouble won't answer the nearest Float/Double to a Fraction or a LargeInteger
PROFILE:
The cost of rounding to nearest float is not excessive:
| tmp |
tmp := '3.1415926535898d0'.
Array
with: [100000 timesRepeat: [VWNumberParser parse: tmp readStream]] timeToRun
with: [100000 timesRepeat: [Number readFrom: tmp readStream]] timeToRun.
[
| tmp |
tmp := '3.1415926535898d0'.
1000000 timesRepeat:
[VWNumberParser parse: tmp readStream.
Number readFrom: tmp readStream].
] timeProfile.
[
| tmp |
tmp := '3.1415926535898d0'.
1000000 timesRepeat:
[VWNumberParser parse: tmp readStream.
Number readFrom: tmp readStream].
] allocationProfile.
The cost of LargeInteger arithmetic is greatly reduced:
[
| tmp |
tmp := 100 factorial printString.
1000 timesRepeat:
[10 timesRepeat: [VWNumberParser parse: tmp readStream].
10 timesRepeat: [Number readFrom: tmp readStream]].
] timeProfile.
[
| tmp |
tmp := 100 factorial printString.
1000 timesRepeat:
[10 timesRepeat: [VWNumberParser parse: tmp readStream].
10 timesRepeat: [Number readFrom: tmp readStream]].
] allocationProfile.
AUTHOR: nicolas cellier , any question, remarks, etc... go to this email.
LICENSE: (MIT) see Copyright property