Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Integer Real World Tests

Boost , Chapter 1. Boost.Multiprecision , Performance Comparison

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Первый набор тестовизмеряет время, затраченное на выполнение многоточной части конструктора Voronoi-диаграммы от Boost. Полигон. Тесты в основном создают большое количество временных «на всякий случай», требуется многоточная арифметика, для сравнения также входит в тесты Boost. Собственный целочисленный тип с частичной умножением, написанный на заказ для этой конкретной задачи:

целочисленный тип

Относительная производительность (реальное время в скобках)

Полигон::деталь::extended_int

1(0.138831s)

int256_t

1.19247 (0.165551s)

int512_t

1.23301(0.17118s)

int1024_t

1.21463(0.168628s)

check_int256_t

1.31711(0.182855s)

check_int512_t

1.57413(0.218538s)

check_int1024_t

1.36992(0.190187s)

cpp_int

1.63244 (0.226632s)

mpz_int

5.42511(0.753172s)

tom_int

29.0793 (4.03709s)

Обратите внимание, что в этом случае любое динамическое распределение является убийцей производительности.

Следующиетестыизмеряют время, затрачиваемое на генерацию 1000 128-битных случайных чисел, и тест на первичность с использованием теста Миллера Рабина. Это в первую очередь тест модульной экспоненциации, так как это шаг ограничения скорости:

целочисленный тип

Относительная производительность (реальное время в скобках)

cpp_int

5.25827(0.379597s)

cpp_int (без шаблонов выражения)

5.15675(0.372268s)

cpp_int (128-битный кэш)

5.10882(0.368808s)

cpp_int (256-битный кэш)

5.50623 (0.397497s)

cpp_int (512-битный кэш)

4.82257(0.348144s)

cpp_int (1024-битный кэш)

5.00053 (0.360991s)

int1024_t

4.37589 (0.315897s)

check_int1024_t

4.52396 (0.326587s)

mpz_int

1(0.0721905s)

mpz_int (без шаблонов выражения)

1.0248 (0.0739806s)

tom_int

2.60673(0.188181s)

tom_int (без шаблонов выражения)

2.64997(0.191303s)

Интересно отметить, что шаблоны выражений здесь малоэффективны - возможно, потому, что фактические задействованные выражения относительно тривиальны в этом случае - поэтому время, необходимое для умножения и деления, имеет тенденцию доминировать. Также обратите внимание на то, что увеличение внутреннего размера кэша, используемого<cpp_int>, довольно эффективно в этом случае при полном вырезании выделений памяти — примерно на треть от общего времени выполнения. Наконец, гораздо более быстрые времена от GMP и tommath сводятся к их гораздо лучшим алгоритмам модульной экспоненциации (GMP примерно в 5 раз быстрее). Это проблема, которая должна быть решена в будущем выпускеcpp_int.

Тестовый код был скомпилирован с помощью Microsoft Visual Studio 2010 со всеми включенными оптимизациями (/Ox), и использовался MPIR-2.3.0 иMPFR-3.0.0. Тесты проводились на 32-разрядной машине Windows Vista.


PrevUpHomeNext

Статья Integer Real World Tests раздела Chapter 1. Boost.Multiprecision Performance Comparison может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Performance Comparison ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:07:10/0.0084879398345947/1