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

Comparing the performance of a single double_ generator

Boost , Spirit 2.5.2 , Performance of Numeric Generators

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

Эти измерения производительности сосредоточены вокруг форматирования по умолчанию одного числа с плавающей точкой<double>с использованием различных библиотек и методов. Общие сроки выполнения для этих примеров сравниваются ниже. Мы сравниваем с использованием<sprintf>, C++ iostreams,ФорматиДух. карма.

Полный исходный код теста производительности см. здесь:double_performance.cpp. Все измерения были выполнены путем выполнения<1e6>итераций для каждого типа форматирования (нумерации установлены на<1e6>в коде, показанном ниже).

Код, используемый для измерения производительности<sprintf>:

char buffer[256];
for (int i = 0; i < NUMITERATIONS; ++i) {
    sprintf(buffer, "%f", 12345.12345);
}

Код, используемый для измерения производительности стандартных C++ iostreams:

std::stringstream strm;
for (int i = 0; i < NUMITERATIONS; ++i) {
    strm.str("");
    strm << 12345.12345;
}

Код, используемый для измерения производительностиBoost.Format:

std::string generated;
boost::format double_format("%f");
for (int i = 0; i < NUMITERATIONS; ++i)
    generated = boost::str(double_format % 12345.12345);

Следующий код показывает общие определения, используемые всеми.Дух. КармаИзмерения эффективности, перечисленные ниже:

using boost::spirit::karma::double_;

Код, используемый для измерения производительностиДух. Кармас использованием простого буфера символов:

char buffer[256];
for (int i = 0; i < NUMITERATIONS; ++i) {
    char *p = buffer;
    generate(p, double_, 12345.12345);
    *p = '\0';
}

В следующей таблице показаны общие результаты работы, собранные при использовании различных компиляторов. Все время измеряется в секундах для<1e6>итераций (платформа: Windows7, процессор Intel Core Duo(tm), 2,8 ГГц, 4 Гбайт оперативной памяти). Для более читабельного сравнения результатов см. этотрисунок.

Table 6. Performance comparison for a single double (all times in [s], `1e6` iterations)

Библиотека

gcc 4.4.0 (32 бит)

VC++ 10 (32 бит)

Intel 11.1 (32 бит)

gcc 4.4.0 (64 бит)

VC++ 10 (64 бит)

Intel 11.1 (64 бит)

спринтф

0,755

0,965

0.880

0,713

0.807

0,694

iostreams

2.316

2.624

1.964

1.634

1.468

1.354

Формат

3.188

3.737

2.878

3.217

2.672

2.011

Дух.Кармадвойной

0.813

0,561

0.368

0.426

0,260

0.218


Figure 4. Performance comparison for a single double

Performance comparison for a single double



PrevUpHomeNext

Статья Comparing the performance of a single double_ generator раздела Spirit 2.5.2 Performance of Numeric Generators может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Performance of Numeric Generators ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 09:37:21/0.006270170211792/0