initial commit
This commit is contained in:
commit
1790fcc301
64
README.md
Normal file
64
README.md
Normal file
@ -0,0 +1,64 @@
|
||||
# interpreter-binary-perf
|
||||
|
||||
Brief performance testing of binary/decimal conversion functions in different scripting interpreters.
|
||||
|
||||
## Test conditions
|
||||
|
||||
Performed under bit noisy conditions (web browser + media player open, etc).
|
||||
|
||||
Each test was run 3x, reporting the best time
|
||||
|
||||
All tests are single-threaded.
|
||||
|
||||
```
|
||||
cat /proc/cpuinfo | grep bogo | head -1
|
||||
bogomips : 6618.86
|
||||
```
|
||||
|
||||
All packages are from Debian Buster except where indicated.
|
||||
|
||||
- Perl v5.28.1
|
||||
- Python2 v2.7.16
|
||||
- Python3 v3.7.3
|
||||
- PHP v7.3.14-1
|
||||
- Node.js v10.20.1 *(nodesource.com distribution)*
|
||||
- Ruby v2.5.5p157
|
||||
|
||||
## Raw loop performance
|
||||
|
||||
|Language |Time(real)|Command
|
||||
|-------------|----------|--------
|
||||
|Perl5 |0m0.308s |`time perl -e 'for($i = 0; $i < 10000000; ++$i) {}'`
|
||||
|Python2 |0m0.502s |`time python2 -c 'for i in range(10000000): pass'`
|
||||
|Python3 |0m0.302s |`time python3 -c 'for i in range(10000000): pass'`
|
||||
|PHP |0m0.249s |`time php -r 'for($i = 0; $i < 10000000; ++$i);'`
|
||||
|Node.js ⭐ |0m0.075s |`time node -e 'for(let i = 0; i < 10000000; ++i);'`
|
||||
|Ruby |0m0.409s |`time ruby -e 'for i in 0..10000000 ; end'`
|
||||
|
||||
## Binary to decimal
|
||||
|
||||
- Use 511 as sample value to bypass 8-bit interning
|
||||
|
||||
|Language |Time(real)|Command
|
||||
|-------------|----------|--------
|
||||
|Perl5 |0m4.745s |`time perl -e 'for($i = 0; $i < 10000000; ++$i) { oct("0b" + "111111111") }'`
|
||||
|Python2 |0m1.794s |`time python2 -c 'for i in range(10000000): int("111111111", 2)'`
|
||||
|Python3 |0m1.953s |`time python3 -c 'for i in range(10000000): int("111111111", 2)'`
|
||||
|PHP |0m13.146s |`time php -r 'for($i = 0; $i < 10000000; ++$i) bindec("111111111");'`
|
||||
|Node.js ⭐ |0m0.709s |`time node -e 'for(let i = 0; i < 10000000; ++i) { parseInt("111111111", 2) }'`
|
||||
|Ruby |0m1.313s |`time ruby -e 'for i in 0..10000000 ; "111111111".to_i(2) ; end'`
|
||||
|
||||
## Decimal to binary
|
||||
|
||||
- Use 257 as sample value to bypass small-integer interning
|
||||
|
||||
|Language |Time(real)|Command
|
||||
|-------------|----------|--------
|
||||
|Perl5 ⭐ |0m0.367s |`time perl -e 'for($i = 0; $i < 10000000; ++$i) { sprintf("%b", 257) }'`
|
||||
|Python2 |0m1.519s |`time python2 -c 'for i in range(10000000): bin(257)[2:]'`
|
||||
|Python2 (alt)|0m2.697s |`time python2 -c 'for i in range(10000000): "{:b}".format(257)'`
|
||||
|Python3 |0m1.988s |`time python3 -c 'for i in range(10000000): bin(257)[2:]'`
|
||||
|Python3 (alt)|0m2.196s |`time python3 -c 'for i in range(10000000): "{:b}".format(257)'`
|
||||
|PHP |0m14.038s |`time php -r 'for($i = 0; $i < 10000000; ++$i) decbin(257);'`
|
||||
|Node.js |0m1.594s |`time node -e 'for(let i = 0; i < 10000000; ++i) { (257).toString(2) }'`
|
||||
|Ruby |0m1.706s |`time ruby -e 'for i in 0..10000000 ; 257.to_s(2) ; end'`
|
Loading…
Reference in New Issue
Block a user