Сообщение Re[3]: Плавающая арифметика в системных потоках от 16.04.2025 16:43
Изменено 16.04.2025 16:47 Marty
Re[3]: Плавающая арифметика в системных потоках
Здравствуйте, Евгений Музыченко, Вы писали:
Упс, сорян, я люто наврал про супер скорость cpp_dec_float, это он побыстрее моего класса в два-три раза, от встроенного double он таки сильно отличается, но деление всего в 250 раз тормознее дабла, а у меня в 2500 раз.
Но можно поменьше знаков использовать, наверное, будет пошустрее, ну, и не обязательно десятичное, мне-то надо было для самописной бухгалтерии, поэтому завязывался на десятичку, но в бусте вроде есть и без такой привязки, должно быть пошустрее
Вот результаты моих перф тестов
Упс, сорян, я люто наврал про супер скорость cpp_dec_float, это он побыстрее моего класса в два-три раза, от встроенного double он таки сильно отличается, но деление всего в 250 раз тормознее дабла, а у меня в 2500 раз.
Но можно поменьше знаков использовать, наверное, будет пошустрее, ну, и не обязательно десятичное, мне-то надо было для самописной бухгалтерии, поэтому завязывался на десятичку, но в бусте вроде есть и без такой привязки, должно быть пошустрее
Вот результаты моих перф тестов
| Скрытый текст | |
| Platform: x86 BCD storage type: std::basic_string double , normal precision, normal numbers, '+' elapsed time: 1390 cpp_dec_float<50> , normal precision, normal numbers, '+' elapsed time: 11438 marty::Decimal(50) , normal precision, normal numbers, '+' elapsed time: 27750 Performance log double : 5.01%, x 19.96 cpp_dec_float : 41.22%, x 2.43 Decimal : 100%, x 1 double , normal precision, normal numbers, '-' elapsed time: 1390 cpp_dec_float<50> , normal precision, normal numbers, '-' elapsed time: 11688 marty::Decimal(50) , normal precision, normal numbers, '-' elapsed time: 29297 Performance log double : 4.74%, x 21.1 cpp_dec_float : 39.89%, x 2.51 Decimal : 100%, x 1 double , normal precision, normal numbers, '==' elapsed time: 1578 cpp_dec_float<50> , normal precision, normal numbers, '==' elapsed time: 5359 marty::Decimal(50) , normal precision, normal numbers, '==' elapsed time: 8047 Performance log double : 19.61%, x 5.1 cpp_dec_float : 66.6%, x 1.50 Decimal : 100%, x 1 double , normal precision, normal numbers, '*' elapsed time: 1391 cpp_dec_float<50> , normal precision, normal numbers, '*' elapsed time: 37453 marty::Decimal(50) , normal precision, normal numbers, '*' elapsed time: 66219 Performance log double : 2.10%, x 47.62 cpp_dec_float : 56.56%, x 1.77 Decimal : 100%, x 1 double , normal precision, normal numbers, '/' elapsed time: 1390 cpp_dec_float<50> , normal precision, normal numbers, '/' elapsed time: 292672 marty::Decimal(50) , normal precision, normal numbers, '/' elapsed time: 3434047 Performance log double : 0.04%, x 2500 cpp_dec_float : 8.52%, x 11.74 Decimal : 100%, x 1 ------------------------------ double , normal precision, accounting numbers, '+' elapsed time: 1328 cpp_dec_float<50> , normal precision, accounting numbers, '+' elapsed time: 12515 marty::Decimal(50) , normal precision, accounting numbers, '+' elapsed time: 30719 Performance log double : 4.32%, x 23.15 cpp_dec_float : 40.74%, x 2.45 Decimal : 100%, x 1 double , normal precision, accounting numbers, '-' elapsed time: 1344 cpp_dec_float<50> , normal precision, accounting numbers, '-' elapsed time: 12859 marty::Decimal(50) , normal precision, accounting numbers, '-' elapsed time: 32610 Performance log double : 4.12%, x 24.27 cpp_dec_float : 39.43%, x 2.54 Decimal : 100%, x 1 double , normal precision, accounting numbers, '==' elapsed time: 1500 cpp_dec_float<50> , normal precision, accounting numbers, '==' elapsed time: 5734 marty::Decimal(50) , normal precision, accounting numbers, '==' elapsed time: 8109 Performance log double : 18.5%, x 5.41 cpp_dec_float : 70.71%, x 1.41 Decimal : 100%, x 1 double , normal precision, accounting numbers, '*' elapsed time: 1344 cpp_dec_float<50> , normal precision, accounting numbers, '*' elapsed time: 40516 marty::Decimal(50) , normal precision, accounting numbers, '*' elapsed time: 113922 Performance log double : 1.18%, x 84.75 cpp_dec_float : 35.56%, x 2.81 Decimal : 100%, x 1 double , normal precision, accounting numbers, '/' elapsed time: 1375 cpp_dec_float<50> , normal precision, accounting numbers, '/' elapsed time: 290765 marty::Decimal(50) , normal precision, accounting numbers, '/' elapsed time: 3527235 Performance log double : 0.04%, x 2500 cpp_dec_float : 8.24%, x 12.14 Decimal : 100%, x 1 ------------------------------ double , long precision , big numbers, '+' elapsed time: 31 cpp_dec_float<1000> , long precision , big numbers, '+' elapsed time: 1781 marty::Decimal(1000) , long precision , big numbers, '+' elapsed time: 7969 Performance log double : 0.39%, x 256.41 cpp_dec_float : 22.35%, x 4.47 Decimal : 100%, x 1 double , long precision , big numbers, '-' elapsed time: 31 cpp_dec_float<1000> , long precision , big numbers, '-' elapsed time: 1781 marty::Decimal(1000) , long precision , big numbers, '-' elapsed time: 8453 Performance log double : 0.37%, x 270.27 cpp_dec_float : 21.07%, x 4.75 Decimal : 100%, x 1 double , long precision , big numbers, '==' elapsed time: 47 cpp_dec_float<1000> , long precision , big numbers, '==' elapsed time: 344 marty::Decimal(1000) , long precision , big numbers, '==' elapsed time: 1609 Performance log double : 2.92%, x 34.25 cpp_dec_float : 21.38%, x 4.68 Decimal : 100%, x 1 double , long precision , big numbers, '*' elapsed time: 0 cpp_dec_float<1000> , long precision , big numbers, '*' elapsed time: 875 marty::Decimal(1000) , long precision , big numbers, '*' elapsed time: 13141 Performance log double : 0.00761%, x 13140.60 cpp_dec_float : 6.66%, x 15.02 Decimal : 100%, x 1 double , long precision , big numbers, '/' elapsed time: 0 cpp_dec_float<1000> , long precision , big numbers, '/' elapsed time: 4656 marty::Decimal(1000) , long precision , big numbers, '/' elapsed time: 547469 Performance log double : 0.000183%, x 546448.09 cpp_dec_float : 0.85%, x 117.65 Decimal : 100%, x 1 ---------- Total time elapsed: 8601.187 seconds ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Platform: x64 BCD storage type: std::basic_string double , normal precision, normal numbers, '+' elapsed time: 3047 cpp_dec_float<50> , normal precision, normal numbers, '+' elapsed time: 10203 marty::Decimal(50) , normal precision, normal numbers, '+' elapsed time: 23735 Performance log double : 12.84%, x 7.79 cpp_dec_float : 42.99%, x 2.33 Decimal : 100%, x 1 double , normal precision, normal numbers, '-' elapsed time: 3047 cpp_dec_float<50> , normal precision, normal numbers, '-' elapsed time: 10422 marty::Decimal(50) , normal precision, normal numbers, '-' elapsed time: 25421 Performance log double : 11.99%, x 8.34 cpp_dec_float : 41%, x 2.44 Decimal : 100%, x 1 double , normal precision, normal numbers, '==' elapsed time: 3079 cpp_dec_float<50> , normal precision, normal numbers, '==' elapsed time: 5703 marty::Decimal(50) , normal precision, normal numbers, '==' elapsed time: 9047 Performance log double : 34.03%, x 2.94 cpp_dec_float : 63.04%, x 1.59 Decimal : 100%, x 1 double , normal precision, normal numbers, '*' elapsed time: 3031 cpp_dec_float<50> , normal precision, normal numbers, '*' elapsed time: 13250 marty::Decimal(50) , normal precision, normal numbers, '*' elapsed time: 56094 Performance log double : 5.40%, x 18.52 cpp_dec_float : 23.62%, x 4.23 Decimal : 100%, x 1 double , normal precision, normal numbers, '/' elapsed time: 3031 cpp_dec_float<50> , normal precision, normal numbers, '/' elapsed time: 97687 marty::Decimal(50) , normal precision, normal numbers, '/' elapsed time: 2659094 Performance log double : 0.11%, x 909.09 cpp_dec_float : 3.67%, x 27.25 Decimal : 100%, x 1 ------------------------------ double , normal precision, accounting numbers, '+' elapsed time: 3047 cpp_dec_float<50> , normal precision, accounting numbers, '+' elapsed time: 11203 marty::Decimal(50) , normal precision, accounting numbers, '+' elapsed time: 26594 Performance log double : 11.46%, x 8.73 cpp_dec_float : 42.13%, x 2.37 Decimal : 100%, x 1 double , normal precision, accounting numbers, '-' elapsed time: 3047 cpp_dec_float<50> , normal precision, accounting numbers, '-' elapsed time: 11531 marty::Decimal(50) , normal precision, accounting numbers, '-' elapsed time: 27812 Performance log double : 10.96%, x 9.12 cpp_dec_float : 41.46%, x 2.41 Decimal : 100%, x 1 double , normal precision, accounting numbers, '==' elapsed time: 3063 cpp_dec_float<50> , normal precision, accounting numbers, '==' elapsed time: 6125 marty::Decimal(50) , normal precision, accounting numbers, '==' elapsed time: 9078 Performance log double : 33.74%, x 2.96 cpp_dec_float : 67.47%, x 1.48 Decimal : 100%, x 1 double , normal precision, accounting numbers, '*' elapsed time: 3047 cpp_dec_float<50> , normal precision, accounting numbers, '*' elapsed time: 14281 marty::Decimal(50) , normal precision, accounting numbers, '*' elapsed time: 94094 Performance log double : 3.24%, x 30.86 cpp_dec_float : 15.18%, x 6.59 Decimal : 100%, x 1 double , normal precision, accounting numbers, '/' elapsed time: 3031 cpp_dec_float<50> , normal precision, accounting numbers, '/' elapsed time: 98906 marty::Decimal(50) , normal precision, accounting numbers, '/' elapsed time: 2749797 Performance log double : 0.11%, x 909.09 cpp_dec_float : 3.6%, x 27.78 Decimal : 100%, x 1 ------------------------------ double , long precision , big numbers, '+' elapsed time: 78 cpp_dec_float<1000> , long precision , big numbers, '+' elapsed time: 1469 marty::Decimal(1000) , long precision , big numbers, '+' elapsed time: 5969 Performance log double : 1.31%, x 76.34 cpp_dec_float : 24.61%, x 4.06 Decimal : 100%, x 1 double , long precision , big numbers, '-' elapsed time: 62 cpp_dec_float<1000> , long precision , big numbers, '-' elapsed time: 1485 marty::Decimal(1000) , long precision , big numbers, '-' elapsed time: 6328 Performance log double : 0.98%, x 102.04 cpp_dec_float : 23.47%, x 4.26 Decimal : 100%, x 1 double , long precision , big numbers, '==' elapsed time: 78 cpp_dec_float<1000> , long precision , big numbers, '==' elapsed time: 281 marty::Decimal(1000) , long precision , big numbers, '==' elapsed time: 1391 Performance log double : 5.61%, x 17.83 cpp_dec_float : 20.20%, x 4.95 Decimal : 100%, x 1 double , long precision , big numbers, '*' elapsed time: 0 cpp_dec_float<1000> , long precision , big numbers, '*' elapsed time: 500 marty::Decimal(1000) , long precision , big numbers, '*' elapsed time: 7562 Performance log double : 0.01%, x 10000 cpp_dec_float : 6.61%, x 15.13 Decimal : 100%, x 1 double , long precision , big numbers, '/' elapsed time: 0 cpp_dec_float<1000> , long precision , big numbers, '/' elapsed time: 2579 marty::Decimal(1000) , long precision , big numbers, '/' elapsed time: 381062 Performance log double : 0.000262%, x 381679.39 cpp_dec_float : 0.68%, x 147.06 Decimal : 100%, x 1 ---------- Total time elapsed: 6399.391 seconds ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |
Re[3]: Плавающая арифметика в системных потоках
Здравствуйте, Евгений Музыченко, Вы писали:
Упс, сорян, я люто наврал про супер скорость cpp_dec_float, это он побыстрее моего класса в два-три раза, от встроенного double он таки сильно отличается, но деление всего в 250 раз тормознее дабла, а у меня в 2500 раз.
Но можно поменьше знаков использовать, наверное, будет пошустрее, ну, и не обязательно десятичное, мне-то надо было для самописной бухгалтерии, поэтому завязывался на десятичку, но в бусте вроде есть и без такой привязки, должно быть пошустрее
Вот результаты моих перф тестов
Упс, сорян, я люто наврал про супер скорость cpp_dec_float, это он побыстрее моего класса в два-три раза, от встроенного double он таки сильно отличается, но деление всего в 250 раз тормознее дабла, а у меня в 2500 раз.
Но можно поменьше знаков использовать, наверное, будет пошустрее, ну, и не обязательно десятичное, мне-то надо было для самописной бухгалтерии, поэтому завязывался на десятичку, но в бусте вроде есть и без такой привязки, должно быть пошустрее
Вот результаты моих перф тестов
| Скрытый текст | |
| |