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

The Bigger Picture

Boost , Chapter 1. Boost.Convert 2.0 , Performance

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

Представленные данные о производительности, связанные с конверсией (и потенциальные проблемы, связанные с производительностью), должны рассматриваться в перспективе. Специальный проект с серьезными высокими требованиями к производительности, скорее всего, потребует специальных решений, которые, скорее всего, выкинут много общих библиотек. Однако существование таких проектов никоим образом не убивало и не умаляло существования общих библиотек. ИУсиление.является одним из такихродовыхБиблиотека.

Более того, если производительность является проблемой, то, по всей вероятности, для подавляющего большинства основных проектовBoost.Convertбудет далеко не лучшим в списке профилировщиков производительности. Например, для измерения накладных расходов, связанных с конверсией, относительно<std::string>- связанных накладных расходов,<std::string>был заменен обычныммалоструннымтипом:

struct my_string
{
    typedef my_string              this_type;
    typedef char                  value_type;
    typedef value_type*             iterator;
    typedef value_type const* const_iterator;
    my_string ();
    my_string (const_iterator, const_iterator =0);
    char const*    c_str () const { return storage_; }
    const_iterator begin () const { return storage_; }
    const_iterator   end () const { return storage_ + strlen(storage_); }
    this_type& operator= (char const*);
    private:
    static size_t const size_ = 12;
    char storage_[size_];
};

Класс выше по существу является прославленным 12-байтовым буфером символов, достаточным для размещения струнных представлений 32-битных целых чисел. Используются те же преобразователи и те же алгоритмы:

printf("strtol int-to std::string/small-string: %.2f/%.2f seconds.\n",
       local::to_str<std::string, int>(boost::cnv::strtol()),
       local::to_str<  my_string, int>(boost::cnv::strtol()));
printf("spirit int-to std::string/small-string: %.2f/%.2f seconds.\n",
       local::to_str<std::string, int>(boost::cnv::spirit()),
       local::to_str<  my_string, int>(boost::cnv::spirit()));
printf("stream int-to std::string/small-string: %.2f/%.2f seconds.\n",
       local::to_str<std::string, int>(boost::cnv::cstream()),
       local::to_str<  my_string, int>(boost::cnv::cstream()));

Он дал следующие относительные результаты (в сочетании с<gcc -O3>):

strtol int-to std::string/small-string: 8.20/2.48 seconds.
spirit int-to std::string/small-string: 8.73/2.81 seconds.
stream int-to std::string/small-string: 12.46/6.94 seconds.

Результаты показывают, что для проектов, которые занимаются конверсиями, связанными со строками, и регулярно развертывают<std::string>объекты, связанные с конверсией накладные расходы будут перевешиваться накладными расходами<std::string>.


PrevUpHomeNext

Статья The Bigger Picture раздела Chapter 1. Boost.Convert 2.0 Performance может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 06:13:12/0.0037369728088379/0