


# Benchmarks








These are the results of benchmarks comparing this `bc` (at version `2.0.0`) and




GNU `bc` (at version `1.07.1`).








Note: all benchmarks were run four time, and the fastest run is the one shown.




Also, `[bc]` means whichever `bc` was being run, and the assumed working




directory is the root directory of this repository. Also, this `bc` was built at




`O2`.








### Addition








The command used was:








```




tests/script bc add.bc 0 1 1 [bc]




```








For GNU `bc`:








```




Running bc script: add.bc








real 2.08




user 1.01




sys 1.06




```








For this `bc`:








```




Running bc script: add.bc








real 1.29




user 1.24




sys 0.04




```








### Subtraction








The command used was:








```




tests/script bc subtract.bc 0 1 1 [bc]




```








For GNU `bc`:








```




Running bc script: subtract.bc








real 2.12




user 1.12




sys 1.00




```








For this `bc`:








```




Running bc script: subtract.bc








real 1.33




user 1.31




sys 0.02




```








### Multiplication








The command used was:








```




tests/script bc multiply.bc 0 1 1 [bc]




```








For GNU `bc`:








```




Running bc script: multiply.bc








real 5.74




user 3.95




sys 1.79




```








For this `bc`:








```




Running bc script: multiply.bc








real 2.59




user 2.55




sys 0.03




```








### Division








The command used was:








```




tests/script bc divide.bc 0 1 1 [bc]




```








For GNU `bc`:








```




Running bc script: divide.bc








real 2.89




user 1.62




sys 1.26




```








For this `bc`:








```




Running bc script: divide.bc








real 2.24




user 2.22




sys 0.01




```








### Power








The command used was:








```




printf '1234567890^100000; halt\n'  time p [bc] lq > /dev/null




```








For GNU `bc`:








```




real 12.08




user 12.08




sys 0.00




```








For this `bc`:








```




real 0.81




user 0.81




sys 0.00




```








### Scripts








A script was created that contained the following:








```




#!/bin/sh








exe="$1"








for i in $(seq 0 1000); do




printf '%d\n' "$i"  "$exe" q tests/bc/scripts/timeconst.bc > /dev/null




done




```








where `tests/bc/scripts/timeconst.bc` is [this file][1]. The script was saved at




`../test.sh`.








The command used was:








```




time p sh ../test.sh [bc]




```








For GNU `bc`:








```




real 0.92




user 0.85




sys 0.17




```








For this `bc`:








```




real 1.01




user 0.96




sys 0.15




```








[1]: https://github.com/torvalds/linux/blob/master/kernel/time/timeconst.bc
