multiprecision/doc/performance_rational.qbk
jzmaddock ae9cf23a11 Documentation update for the new rational_adaptor.
Includes updating all the performance results.
2021-09-30 19:45:16 +01:00

171 lines
8.6 KiB
Plaintext

[/
Copyright 2011 - 2020 John Maddock.
Copyright 2013 - 2019 Paul A. Bristow.
Copyright 2013 Christopher Kormanyos.
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt).
]
[section:rational_performance Rational Type Performance]
Note that these tests are carefully designed to test performance of the underlying algorithms
and not memory allocation or variable copying. As usual, performance results should be taken
with a healthy dose of scepticism, and real-world performance may vary widely depending upon the
specifics of the program. In each table relative times are given first, with the best performer
given a score of 1. Total actual times are given in brackets, measured in seconds for 500000
operations.
[table Operator *
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][2.00025 (0.797425s)][1.97726 (2.96998s)][1.86844 (6.73224s)][1.96608 (14.4259s)]]
[[mpq_rational][[*1] (0.398662s)][[*1] (1.50207s)][[*1] (3.60314s)][[*1] (7.3374s)]]
]
[table Operator *(int)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.88073 (0.0637195s)][1.93184 (0.0917847s)][2.15609 (0.118274s)][2.4236 (0.218283s)]]
[[mpq_rational][[*1] (0.0338803s)][[*1] (0.0475114s)][[*1] (0.0548556s)][[*1] (0.0900656s)]]
]
[table Operator *(unsigned long long)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.60877 (0.161844s)][2.33429 (0.240069s)][1.8835 (0.298935s)][2.70338 (0.448194s)]]
[[mpq_rational][[*1] (0.100601s)][[*1] (0.102844s)][[*1] (0.158713s)][[*1] (0.16579s)]]
]
[table Operator *(value_type)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.97503 (0.408791s)][2.42069 (0.600225s)][2.65138 (0.803009s)][4.65673 (1.54645s)]]
[[mpq_rational][[*1] (0.20698s)][[*1] (0.247956s)][[*1] (0.302865s)][[*1] (0.332089s)]]
]
[table Operator *=(unsigned long long)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.97207 (0.211848s)][2.18482 (0.226179s)][2.43682 (0.319695s)][2.69933 (0.485819s)]]
[[mpq_rational][[*1] (0.107424s)][[*1] (0.103523s)][[*1] (0.131194s)][[*1] (0.179978s)]]
]
[table Operator *=(value_type)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.95211 (0.40255s)][2.60942 (0.629302s)][2.83854 (0.8029s)][4.34054 (1.37083s)]]
[[mpq_rational][[*1] (0.206213s)][[*1] (0.241165s)][[*1] (0.282857s)][[*1] (0.31582s)]]
]
[table Operator +
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][2.20364 (0.415006s)][1.97574 (1.53458s)][1.75945 (3.41194s)][2.11634 (8.04044s)]]
[[mpq_rational][[*1] (0.188327s)][[*1] (0.776716s)][[*1] (1.93921s)][[*1] (3.79923s)]]
]
[table Operator +(int)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][2.06836 (0.0177811s)][1.80334 (0.0183744s)][1.38442 (0.020452s)][1.81894 (0.0449351s)]]
[[mpq_rational][[*1] (0.00859669s)][[*1] (0.0101891s)][[*1] (0.014773s)][[*1] (0.024704s)]]
]
[table Operator +(unsigned long long)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][2.07187 (0.0177151s)][2.3005 (0.0241089s)][1.81397 (0.0297836s)][1.72202 (0.046594s)]]
[[mpq_rational][[*1] (0.0085503s)][[*1] (0.0104799s)][[*1] (0.016419s)][[*1] (0.0270577s)]]
]
[table Operator +(value_type)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.2805 (0.0265647s)][1.59353 (0.0391054s)][1.26613 (0.044067s)][1.95307 (0.105801s)]]
[[mpq_rational][[*1] (0.0207456s)][[*1] (0.0245401s)][[*1] (0.0348044s)][[*1] (0.0541719s)]]
]
[table Operator +=(unsigned long long)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][7.29749 (0.0565983s)][3.77253 (0.0371419s)][2.72128 (0.0556987s)][2.01495 (0.0662456s)]]
[[mpq_rational][[*1] (0.00775585s)][[*1] (0.00984535s)][[*1] (0.0204678s)][[*1] (0.032877s)]]
]
[table Operator +=(value_type)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.92025 (0.0335896s)][2.08321 (0.0422867s)][1.587 (0.0564267s)][1.85357 (0.0840696s)]]
[[mpq_rational][[*1] (0.0174923s)][[*1] (0.0202988s)][[*1] (0.0355556s)][[*1] (0.0453556s)]]
]
[table Operator -
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][2.38126 (0.471759s)][1.92631 (1.52484s)][1.76181 (3.49648s)][2.03462 (7.71926s)]]
[[mpq_rational][[*1] (0.198113s)][[*1] (0.791584s)][[*1] (1.98459s)][[*1] (3.79396s)]]
]
[table Operator -(int)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][2.44447 (0.0292894s)][2.54602 (0.0346718s)][1.4869 (0.035503s)][1.95344 (0.0577029s)]]
[[mpq_rational][[*1] (0.0119819s)][[*1] (0.013618s)][[*1] (0.0238773s)][[*1] (0.0295391s)]]
]
[table Operator -(unsigned long long)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][2.93654 (0.0296698s)][4.23087 (0.0496956s)][1.68041 (0.0461985s)][1.4455 (0.0581714s)]]
[[mpq_rational][[*1] (0.0101037s)][[*1] (0.0117459s)][[*1] (0.0274924s)][[*1] (0.040243s)]]
]
[table Operator -(value_type)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.69242 (0.0408789s)][1.5205 (0.0467416s)][1.31525 (0.0548939s)][2.16115 (0.103471s)]]
[[mpq_rational][[*1] (0.0241541s)][[*1] (0.030741s)][[*1] (0.0417365s)][[*1] (0.0478777s)]]
]
[table Operator -=(unsigned long long)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][3.69509 (0.0366534s)][3.7306 (0.0439181s)][1.8352 (0.0491612s)][1.86662 (0.071761s)]]
[[mpq_rational][[*1] (0.00991947s)][[*1] (0.0117724s)][[*1] (0.0267879s)][[*1] (0.0384444s)]]
]
[table Operator -=(value_type)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.76299 (0.0421283s)][2.03803 (0.0490152s)][1.84864 (0.053198s)][2.10533 (0.0881228s)]]
[[mpq_rational][[*1] (0.023896s)][[*1] (0.0240502s)][[*1] (0.0287769s)][[*1] (0.041857s)]]
]
[table Operator /
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][2.03433 (2.28881s)][2.24309 (6.34454s)][2.1203 (13.2036s)][2.36142 (29.3236s)]]
[[mpq_rational][[*1] (1.12509s)][[*1] (2.82848s)][[*1] (6.22726s)][[*1] (12.4178s)]]
]
[table Operator /(int)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][[*1] (0.035134s)][1.08556 (0.0774619s)][1.08797 (0.104628s)][1.29134 (0.207067s)]]
[[mpq_rational][1.85049 (0.0650149s)][[*1] (0.0713565s)][[*1] (0.0961679s)][[*1] (0.16035s)]]
]
[table Operator /(unsigned long long)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.31397 (0.170727s)][1.63747 (0.216019s)][1.68581 (0.292536s)][1.76695 (0.435259s)]]
[[mpq_rational][[*1] (0.129932s)][[*1] (0.131923s)][[*1] (0.173528s)][[*1] (0.246334s)]]
]
[table Operator /(value_type)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.82473 (0.431612s)][2.20261 (0.596248s)][2.45848 (0.809662s)][3.88675 (1.38001s)]]
[[mpq_rational][[*1] (0.236534s)][[*1] (0.270701s)][[*1] (0.329335s)][[*1] (0.355055s)]]
]
[table Operator /=(unsigned long long)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.58868 (0.216252s)][1.71288 (0.235781s)][1.78218 (0.314161s)][1.98715 (0.460033s)]]
[[mpq_rational][[*1] (0.136121s)][[*1] (0.137652s)][[*1] (0.176279s)][[*1] (0.231505s)]]
]
[table Operator /=(value_type)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][1.72896 (0.40369s)][2.55949 (0.689514s)][2.4929 (0.832288s)][3.51238 (1.37478s)]]
[[mpq_rational][[*1] (0.233487s)][[*1] (0.269395s)][[*1] (0.333863s)][[*1] (0.391409s)]]
]
[table Operator construct
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][[*1] (0.0135822s)][[*1] (0.00935293s)][[*1] (0.0083784s)][[*1] (0.00962697s)]]
[[mpq_rational][1.44264 (0.0195942s)][2.18249 (0.0204126s)][2.64725 (0.0221797s)][2.87767 (0.0277033s)]]
]
[table Operator construct(unsigned long long)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][[*1] (0.00806026s)][[*1] (0.00960336s)][[*1] (0.00769898s)][[*1] (0.0176689s)]]
[[mpq_rational][4.87225 (0.0392716s)][5.91987 (0.0568506s)][9.03811 (0.0695842s)][3.68339 (0.0650815s)]]
]
[table Operator construct(unsigned)
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][[*1] (0.00672081s)][[*1] (0.0064826s)][[*1] (0.00618635s)][[*1] (0.00923644s)]]
[[mpq_rational][6.47138 (0.0434929s)][7.48645 (0.0485316s)][8.2942 (0.0513108s)][5.77363 (0.0533278s)]]
]
[table Operator str
[[Backend][128 Bits][256 Bits][512 Bits][1024 Bits]]
[[cpp_rational][6.17439 (0.00168424s)][7.6748 (0.0033367s)][6.38435 (0.00662873s)][9.07696 (0.0174979s)]]
[[mpq_rational][[*1] (0.000272779s)][[*1] (0.000434761s)][[*1] (0.00103828s)][[*1] (0.00192772s)]]
]
[table:platform Platform Details
[[][Version]]
[[Compiler][GNU C++ version 10.3.0]]
[[GMP][6.2.0]]
[[MPFR][262146]]
[[Boost][107800]]
[[Run date][Sep 30 2021]]
]
[endsect]