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

The Overhead in the Number Class Wrapper

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

Используя простой классbackend, который обертывает любой встроенный арифметический тип, мы можем измерить накладные расходы, связанные с оберткой типа внутри интерфейса<number>, и эффект, который имеет включение шаблонов выражения. Следующая таблица сравнивает производительность между<double>и<double>, завернутым внутри класса<number>:

Тип

Оценка функции Бесселя

Нецентральная оценка Т

<double>

1.0 (0.016s)

1.0(0.46)

<number<arithmetic_backend<double>, et_off>>

1.2 (0.019s)

1.0(0.46)

<number<arithmetic_backend<double>, et_on>>

1.2 (0.019s)

1.7 (0.79s)

Как видите, есть ли накладные расходы, и насколько они велики, зависит от реальной ситуации, но накладные расходы в любом случае малы. Шаблоны экспрессии обычно добавляют большие накладные расходы, чем сложнее становится выражение, благодаря логике выяснения того, как лучше распаковать и оценить выражение, но, конечно, это также ситуация, когда вы экономите больше времени. Для «тривиального» бэкэнда, такого как этот, экономия времени не имеет никакой пользы, но для более крупных типов это становится большей победой.

Следующая таблица сравнивает арифметику, используя либо<long long>, либо<number<arithmetic_backend<longlong>>>длятеста строителя вороной-диаграммы:

Тип

Относительное время

<longlong>

1.0(0.0823s)

<number<arithmetic_backend<longlong>,et_off>>

1.05 (0.0875)

Этот тест включает в себя в основном создание большого количества временных интервалов и выполнение небольшого количества арифметики на них с очень небольшой разницей в производительности между нативным и «завернутым» типами.

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


PrevUpHomeNext

Статья The Overhead in the Number Class Wrapper раздела Chapter 1. Boost.Multiprecision Performance Comparison может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 01:52:09/0.0056178569793701/1