![]()  | 
Home | Libraries | People | FAQ | More | 
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 1.62. Operator +
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 5.89417 (18.4116s)  | 
                 6.87256 (47.4698s)  | 
                 6.65008 (107.715s)  | 
                 6.53801 (256.244s)  | 
| 
                 mpq_rational  | 
                 1 (3.1237s)  | 
                 1 (6.90715s)  | 
                 1 (16.1975s)  | 
                 1 (39.1929s)  | 
Table 1.63. Operator +(int)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 3.62367 (2.46488s)  | 
                 4.18291 (2.94603s)  | 
                 4.726 (3.74866s)  | 
                 6.1388 (5.56817s)  | 
| 
                 mpq_rational  | 
                 1 (0.680215s)  | 
                 1 (0.704303s)  | 
                 1 (0.7932s)  | 
                 1 (0.907046s)  | 
Table 1.64. Operator +(unsigned long long)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1.1527 (2.6378s)  | 
                 1.31751 (3.09863s)  | 
                 1.58996 (4.00714s)  | 
                 2.15642 (5.75702s)  | 
| 
                 mpq_rational  | 
                 1 (2.28837s)  | 
                 1 (2.35189s)  | 
                 1 (2.52028s)  | 
                 1 (2.66971s)  | 
Table 1.65. Operator +=(unsigned long long)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1.18436 (2.7059s)  | 
                 1.32279 (3.11099s)  | 
                 1.61398 (4.05389s)  | 
                 2.20048 (5.84623s)  | 
| 
                 mpq_rational  | 
                 1 (2.2847s)  | 
                 1 (2.35183s)  | 
                 1 (2.51174s)  | 
                 1 (2.6568s)  | 
Table 1.66. Operator -
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 5.81893 (18.3457s)  | 
                 6.82209 (47.1928s)  | 
                 6.64143 (107.498s)  | 
                 6.51362 (255.137s)  | 
| 
                 mpq_rational  | 
                 1 (3.15277s)  | 
                 1 (6.91765s)  | 
                 1 (16.1859s)  | 
                 1 (39.1698s)  | 
Table 1.67. Operator -(int)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 3.72441 (2.48756s)  | 
                 4.27663 (2.98713s)  | 
                 4.62109 (3.72114s)  | 
                 6.17605 (5.56503s)  | 
| 
                 mpq_rational  | 
                 1 (0.667908s)  | 
                 1 (0.698479s)  | 
                 1 (0.805252s)  | 
                 1 (0.901066s)  | 
Table 1.68. Operator -(unsigned long long)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1.15627 (2.63239s)  | 
                 1.32096 (3.12092s)  | 
                 1.61044 (4.00106s)  | 
                 2.19378 (5.7644s)  | 
| 
                 mpq_rational  | 
                 1 (2.27663s)  | 
                 1 (2.36262s)  | 
                 1 (2.48445s)  | 
                 1 (2.62761s)  | 
Table 1.69. Operator -=(unsigned long long)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1.1984 (2.73444s)  | 
                 1.34141 (3.15698s)  | 
                 1.64159 (4.06997s)  | 
                 2.23017 (5.88108s)  | 
| 
                 mpq_rational  | 
                 1 (2.28174s)  | 
                 1 (2.35348s)  | 
                 1 (2.47929s)  | 
                 1 (2.63706s)  | 
Table 1.70. Operator *
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 5.4306 (32.5882s)  | 
                 6.91805 (89.9436s)  | 
                 6.94556 (207.307s)  | 
                 6.88704 (492.151s)  | 
| 
                 mpq_rational  | 
                 1 (6.00084s)  | 
                 1 (13.0013s)  | 
                 1 (29.8475s)  | 
                 1 (71.4604s)  | 
Table 1.71. Operator *(int)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 2.12892 (2.51376s)  | 
                 2.47245 (3.07841s)  | 
                 2.86832 (3.93619s)  | 
                 3.94086 (6.02565s)  | 
| 
                 mpq_rational  | 
                 1 (1.18077s)  | 
                 1 (1.24508s)  | 
                 1 (1.3723s)  | 
                 1 (1.52902s)  | 
Table 1.72. Operator *(unsigned long long)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1.32254 (5.43565s)  | 
                 1.56078 (6.73163s)  | 
                 1.97701 (9.32522s)  | 
                 2.85404 (15.1573s)  | 
| 
                 mpq_rational  | 
                 1 (4.11002s)  | 
                 1 (4.313s)  | 
                 1 (4.71682s)  | 
                 1 (5.31082s)  | 
Table 1.73. Operator *=(unsigned long long)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 6.29806 (58.1188s)  | 
                 6.30556 (59.5076s)  | 
                 6.3385 (62.1007s)  | 
                 6.55345 (67.6905s)  | 
| 
                 mpq_rational  | 
                 1 (9.22804s)  | 
                 1 (9.43733s)  | 
                 1 (9.79739s)  | 
                 1 (10.329s)  | 
Table 1.74. Operator /
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 4.4269 (66.8031s)  | 
                 6.40103 (173.527s)  | 
                 6.32347 (348.193s)  | 
                 6.61148 (824.063s)  | 
| 
                 mpq_rational  | 
                 1 (15.0903s)  | 
                 1 (27.1093s)  | 
                 1 (55.0637s)  | 
                 1 (124.641s)  | 
Table 1.75. Operator /(int)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1.78772 (2.50984s)  | 
                 2.10623 (3.10606s)  | 
                 2.46986 (3.99358s)  | 
                 3.37428 (5.96678s)  | 
| 
                 mpq_rational  | 
                 1 (1.40393s)  | 
                 1 (1.4747s)  | 
                 1 (1.61693s)  | 
                 1 (1.76831s)  | 
Table 1.76. Operator /(unsigned long long)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1.29695 (5.45454s)  | 
                 1.55248 (6.85353s)  | 
                 1.93237 (9.28765s)  | 
                 2.75211 (14.8541s)  | 
| 
                 mpq_rational  | 
                 1 (4.20568s)  | 
                 1 (4.41458s)  | 
                 1 (4.80635s)  | 
                 1 (5.39734s)  | 
Table 1.77. Operator /=(unsigned long long)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 6.19401 (58.4278s)  | 
                 6.20135 (59.643s)  | 
                 6.21327 (62.0338s)  | 
                 6.40576 (67.6778s)  | 
| 
                 mpq_rational  | 
                 1 (9.43295s)  | 
                 1 (9.61774s)  | 
                 1 (9.98407s)  | 
                 1 (10.5652s)  | 
Table 1.78. Operator construct
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1 (0.00978288s)  | 
                 1 (0.0100574s)  | 
                 1 (0.0101393s)  | 
                 1 (0.0101847s)  | 
| 
                 mpq_rational  | 
                 39.1516 (0.383015s)  | 
                 38.3523 (0.385725s)  | 
                 37.5812 (0.381048s)  | 
                 37.6007 (0.382953s)  | 
Table 1.79. Operator construct(unsigned)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1 (0.0548151s)  | 
                 1 (0.0557542s)  | 
                 1 (0.055825s)  | 
                 1 (0.0552808s)  | 
| 
                 mpq_rational  | 
                 7.21073 (0.395257s)  | 
                 7.1016 (0.395944s)  | 
                 7.02046 (0.391917s)  | 
                 7.16881 (0.396297s)  | 
Table 1.80. Operator construct(unsigned long long)
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 1 (0.0605156s)  | 
                 1 (0.0616657s)  | 
                 1 (0.0592056s)  | 
                 1 (0.0603081s)  | 
| 
                 mpq_rational  | 
                 35.1604 (2.12775s)  | 
                 34.7575 (2.14335s)  | 
                 35.7232 (2.11502s)  | 
                 35.0437 (2.11342s)  | 
Table 1.81. Operator str
| 
                 Backend  | 
                 128 Bits  | 
                 256 Bits  | 
                 512 Bits  | 
                 1024 Bits  | 
|---|---|---|---|---|
| 
                 cpp_rational  | 
                 5.48898 (0.0208949s)  | 
                 8.49668 (0.0546688s)  | 
                 10.107 (0.121897s)  | 
                 10.5339 (0.310584s)  | 
| 
                 mpq_rational  | 
                 1 (0.0038067s)  | 
                 1 (0.00643413s)  | 
                 1 (0.0120606s)  | 
                 1 (0.0294843s)  | 
Test code was compiled with Microsoft Visual Studio 2010 with all optimisations turned on (/Ox), and used MPIR-2.3.0 and MPFR-3.0.0. The tests were run on 32-bit Windows Vista machine.