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

Appendices

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 7. Boost.Chrono 2.0.5

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

Исправления:

  • #11630Повысить хронодокументацию о повышении хроноверсии и усилителе; io API неверен.
  • #12176Хроно без привязки к бусту. Система
  • #12260Баг: time_fmt не поддерживает wchar_t на окнах

Исправления:

  • #11330boost::chrono::duration default constructor doesn't initialize rep_
  • #11618Хроно IO V2 doc ios_state.hpp не существует
  • #11631Усиление chrono io v2 не позволяет поддерживать пользовательские часы

Исправления:

  • #10778VC14 CTP4 Atomic don't compile with boost::chrono durations (недоступная ссылка) которые не являются тривиально копируемыми
  • #10840Пропавший std:: квалификатор для вызова путов в test_7868.cpp
  • #10851Пропущенный std:: квалификатор для вызова во времени_point_output.cpp
  • #10893Малый док опечатка в Boost. Хроно
  • #10992Сберегатели состояния Chrono IO несовместимы с Boost. Сберегатели штата
  • #10995Продолжительность_put::put_value усечена дробной частью
  • #11006Невозможно инстанцировать time_fmt_io_saver из-за нескольких ошибок.
  • #11012chrono_io v2 не компилируется с boost::chrono::duration< boost::rational>

Исправления:

  • #6918Усилить отказ компиляции Chrono на HP uX из-за неопределенного pthread_getcpuclockid
  • #8006Повышение::Хроноутверждение при запуске - steady_clock::now() - Windows
  • #9337хроно::process_cpu_clock time points wrong by factor 1000 on Linux
  • #9342Регрессия на process_cpu_clock::timepoint io на V2
  • #9419Повышение::хроно::пол()/круг() и отрицательная продолжительность неверна
  • #9698boost::chrono::thread_clock Не объявлено в OSX
  • #9720boost::this_thread::sleep_for() иногда возвращается сразу на win32
  • #9859Удалить ссылки на gcc-mingw
  • #9918ошибка компиляции хроно на Solaris, функция timegm
  • #9811boost/boost/chrono/duration.hpp:355:56: error: call to non-constexpr function 'static std::numeric_limits::_Ty std::numeric_limits::max() /home/zosun/input_service/inputservices-coreservice/other/boost/boost/chrono/duration.hpp: В статическом элементе функция «статическое двойное усиление constexpr::chrono::detail::chrono_numeric_limits::lowest()»:
  • #10069Перелив хроночасов на 32-битных
  • #10151функция timegm недоступна на QNX

Исправления:

  • #7868хроно_ио неправильно парирует время (1.53 и 1.52)
  • #9028Typo в boost/chrono/stopwatches/formatters/base_formatter.hpp
  • #9147uninitialized std::tm
  • #9274потеряна точность ввода системных часов.
  • #9276выход из системы_часы::time_point получить Time_point, который на один день позже, чем ожидалось.

Исправления:

  • #8079Утечка хронопамяти
  • #8318BOOST_FORCEINLINE конструкторы времени_точки и продолжительности
  • #8367хроно не компилируется с клангом из XCode 4.5.2 с -std=c++11 -stdlib=libc++ и -arch armv7
  • #8370опечатка в хронологической ссылке
  • #8435Хроно нельзя компилировать на HP-UX из-за отсутствия макроса CLOCK_REALTIME.
  • #8690Продолжительность_units_default — утерянная константа типов возврата в переопределённых методах.
  • #8691iostate не проверяется после вызова scan_keyword.
  • #8696ошибка компиляции хроно на Solaris/gcc.

Пренебрежение:

  • Версия chrono i/o включена в Boost. Chrono 1.2.x полностью переработан в версии 2.0.0
  • хронометр I/O: Манипуляторы<duration_short>,<duration_long>обесцениваются. Вместо этого следует использовать параметризованную форму<duration_fmt>или переименованные манипуляторы __duration_symbol и __duration_prefix.
  • хронометр I/O:<duration_punct><>грань обесценивается. Вы должны использовать<get_duration_style>бесплатную функцию для получения информации и использования.<duration_units>грань для целей локализации.

Когда BOOST_CHRONO_VERSION==2, предыдущие функции не доступны.

Исправления:

  • #7546time_pointвыходная версия 2 не компилирует назначенные viboes Bugs Boost 1.53.0
  • #7547time_pointвводная версия 2 не компилирует назначенные viboes Bugs Boost 1.53.0
  • #7868хроно_ио неправильно парирует время (1.53 и 1.52)

Новые возможности:

  • Усилить хронометраж I/O
    • #5980Усилить хронометраж I/O с помощью H. Предложение Хиннанапредложение, которое имеет преимущество в обеспечении ввода/вывода для системных часов с использованием григорианского календаря.
    • #5981Добавить i/o сохранения состояния для состояния форматирования длительности и Time_point.
    • #7059Добавьте низкий уровень i/o.

Пренебрежение:

  • Версия chrono i/o включена в Boost. Chrono 1.2.x полностью переработан в версии 2.0.0
  • хронометр I/O: Манипуляторы<duration_short>,<duration_long>обесцениваются. Вместо этого следует использовать параметризованную форму<duration_fmt>или переименованные манипуляторы __duration_symbol и __duration_prefix.
  • хронометр I/O:<duration_punct><>грань обесценивается. Вы должны использовать<get_duration_style>бесплатную функцию для получения информации и использования.<duration_units>грань для целей локализации.

Когда BOOST_CHRONO_VERSION==2, предыдущие функции не доступны.

Исправления:

  • #7381Соответствие C++11: неразрешенный символ при назначении длительности constexpr неконстной локальной переменной.
  • #7479Компиляции не работают с компиляторами, поддерживающими constexpr, если стандартная библиотека не предоставляет интерфейс constexpr
  • #7493отказ компиляции на intel-linux-12.1.3.0x из-за ошибки на явном преобразовании болта
  • #7542Пропавшая -lpthread в хроно/ио тестере Sandia-clang-trunk

Не исправил бы:

  • #6871chrono_io.hpp: operator<<(ostream& os, ...) изменяет состояние os.
    • Новый интерфейс io, представленный в версии 2, решает эту проблему. Вы должны перейти к новой версии.

Известные ошибки еще не исправлены:

  • #7525Неправильные часы_string::since() на Windows

Исправления:

  • #6918Усилить отказ компиляции Chrono на HP uX из-за неопределенного pthread_getcpuclockid.
  • #6241boost::chrono compilation problems without std::wstring support.
  • #6987Документация и усилитель; C++11.
  • #7041time_point.hpp зависит от Boost.System.
  • #7042Избегать зависимости от времени и продолжительности на time.h и CLOCK_REALTIME.
  • #7058Заставьте его работать, когда BOOST_NO_EXCEPTIONS определен.
  • #7069Ошибки в часах_string.
  • #7081WinError.h капитализация в boost/detail/win/basic_types.hpp.

Исправления:

  • #6361целочисленное переполнение в бустере::chrono::process_real_cpu_clock::now() под Windows 32bits.
  • #6628предупреждение компилятора в process_cpu_clocks.hpp.
  • #6666thread_clock.hpp нуждается в pthread.h.

Исправления:

  • #6092Ввод из неинтегральных длительностей приводит к сбою компилятора.
  • #6093[1/3] секунда выходит из строя как действительный вход продолжительности.
  • #6113дублированный символ, когда BOOST_CHRONO_HEADER_ONLY определен.
  • #6243Сандия-пги-11.9: более одного экземпляра перегруженных функций «мин» матчей.
  • #6257process_cpu_clock::now() на linux даёт точки времени 1/1000 раз.

Новые возможности:

  • #5979Добавлены утилиты округления хронометров, определенные Говардом Хиннантомздесь.
  • #5978Добавлено BOOST_CHRONO_HAS_PROCESS_CLOCKS Чтобы узнать, доступны ли технологические часы.
  • #5998Сделайте возможным не предоставлять гибридную обработку ошибок.
  • #5906Учитывайте constexpr, как определено в стандарте.
  • #5907Учитывайте только компиляторы, поддерживающие его.

Исправления:

  • #2114Включить поддержку видимости (часть Boost.Chorno)
  • #5669Сбой компилятора Intel в компиляции. hp
  • #5909process_cpu_clock::now() на MAC даёт точки времени 1/1000 раз.
  • #5946Реальные часы cpu возвращают системе устойчивые часы (окна).
  • #5974Реальные часы cpu должны использовать часы () вместо времени () в MAC, которое в два раза быстрее и имеет лучшее разрешение.

Очистка:

  • #5975Уменьшите комбинации только заголовка, общей статической ссылки, чтобы сократить время тестирования на 50%.
  • #5976chrono_accuracy_test не является детерминированным и должен быть удален из регрессионных тестов
  • #5977Удалите старые файлы из версии Бемана. Некоторые старые файлы, включенные в версию Бемана и не задокументированные в рассмотренной версии, были определенно удалены из хранилища как
    • boost/chrono/timer.hpp,
    • boost/chrono/process_times.hpp
    • boost/chrono/detail/process_clock.hpp
    • boost/chrono/detail/mac/process_clock.hpp
    • boost/chrono/detail/posix/process_clock.hpp
    • boost/chrono/detail/win/process_clock.hpp
    • boost/chrono/detail/run_timer.hpp
    • boost/chrono/detail/run_timer_static.hpp

Новые возможности:

  • #???Добавлены унарные операторы time_point +,-,++,- и двоичные операторы +<,->с Rep al RHS.
  • #5323Добавить ассоциированную разность типов_тип для chrono::time_point.

Исправления:

  • #5322Явный построенный по умолчанию хрон:: Продолжительность неинициализирована
  • Перенес хроно в багажник с учетом замечаний обзора.
  • Пересмотр документации.

Особенности:

  • Boost_Chrono теперь является настраиваемой версией библиотеки только для заголовков (которая также позволяет пользователю выбирать, включен ли файл<windows.h>или нет).
  • Добавлены часы_string<>черты.
  • Хроно-йо для всех часов.
  • Добавить ввод представления process_times.

Осуществление:

  • Использование файлов Detail/win, чтобы избежать использования файла Windows.h.
  • Завершена обработка кода ошибки.
  • Работает с BOOST_SYSTEM_NO_DEPRECATED.

Исправления:

  • Исправьте некоторые предупреждения.
  • Исправьте оригинальные ошибки на Mac
  • Не фиксируйте ссылку с boost_system на статическую.

Испытание:

  • Добавлен тест на процесс и резьба часов.
  • Обсуждение Lightweight_test.hpp
  • Возможность тестирования нескольких конфигураций.

Док:

  • Убрали некоторые неполезные части, как тест и билеты.

См.N2661 - A Foundation to Sleep On, который является очень информативным и обеспечивает мотивацию для ключевых дизайнерских решений. Этот раздел содержит некоторые выдержки из этого документа.

Why duration needs operator%

Этот оператор удобен для вычислений, где в временном интервале лежит заданная продолжительность. Мотивирующим примером является преобразование продолжительности в «разбитую» продолжительность времени, такую как часы:: минуты:: секунды:

class ClockTime
{
    typedef boost::chrono::hours hours;
    typedef boost::chrono::minutes minutes;
    typedef boost::chrono::seconds seconds;
public:
    hours hours_;
    minutes minutes_;
    seconds seconds_;
    template <class Rep, class Period>
      explicit ClockTime(const boost::chrono::duration<Rep, Period>& d)
        : hours_  (boost::chrono::duration_cast<hours>  (d)),
          minutes_(boost::chrono::duration_cast<minutes>(d % hours(1))),
          seconds_(boost::chrono::duration_cast<seconds>(d % minutes(1)))
          {}
};
Which APIs have been chosen to implement each clock on each platform?

В следующей таблице представлено резюме, в котором API используется для каждого часа на каждой платформе.

Table 7.4. Clock API correspondence

Часы

Платформа Windows

Платформа Posix

Платформа Mac

<system_clock>

GetSystemTimeAsFileTime

clock_gettime(CLOCK_REALTIME)

время суток

<steady_clock>

QueryPerformanceCounter и Query Выступление Частота

clock_gettime CLOCK_STEADY

mach_timebase_info,mach_absolute_time

<process_real_cpu_clock>

GetProcessTimes

раз

раз

<process_system_cpu_clock>

GetProcessTimes

раз

раз

<process_user_cpu_clock>

GetProcessTimes

раз

раз

<process_cpu_clock>

GetProcessTimes

раз

раз

<thread_clock>

GetThreadTimes

clock_gettime(pthread_getcpuclockid)

clock_gettime(pthread_getcpuclockid)


Why does process_cpu_clock sometimes give more cpu seconds than real seconds?

Спросите поставщика операционной системы. Результаты были проверены с помощью отладчика, и как для Windows, так и для Linux, это то, о чем иногда сообщает ОС.

Are integer overflows in the duration arithmetic detected and reported?

Boost.Ratioпозволяет избежать любого перелива, который может быть результатом арифметической операции и который может быть упрощен. Длительность типдефов не обнаруживает переполнения. Вам понадобится представление продолжительности, которое обрабатывает переполнение.

Which clocks should be used to benchmarking?

У каждого часа есть свои особенности. Это зависит от того, что вам нужно для сравнения. Большую часть времени вы можете быть заинтересованы в использовании потоковых часов, но если вам нужно измерить код, подлежащий синхронизации, часы процесса будут лучше. Если у вас есть многопроцессное приложение, могут потребоваться общесистемные часы.

Which clocks should be used for watching?

Для отслеживания, вероятно, лучше всего использовать общесистемные часы.

Код библиотеки был получен из прототипа Time2_demo Говарда Хиннана. Большое спасибо Говарду за то, что он сделал свой код доступным по лицензии Boost. Оригинальный код был изменен Беманом Доусом в соответствии с конвенциями Boost.

Time2_demo содержит следующий комментарий:

Большое спасибо Андрею Александреску, Уолтеру Брауну, Питеру Димову, Джеффу Гарланду, Терри Голубьевски, Даниэлю Круглеру, Энтони Уильямсу.

Файлбыл адаптирован из экспериментального заголовка<<chrono_io>>Говарда Хиннана. Спасибо за всё, Говард.

Говард Хиннант, который является настоящим автором библиотеки, предоставил ценные отзывы и предложения во время разработки библиотеки. В частности, источник chrono_io_io.hpp был адаптирован из экспериментального заголовка<<chrono_io>>Говарда Хиннана.

Обзор принятия Boost. Соотношение произошло между 5 и 15 ноября 2010 года. Большое спасибо Энтони Уильямсу, рецензенту и всем рецензентам: Дэвид Дикинс, Джон Байтвей, Роланд Бок и Пол А. Бристоу.

Спасибо Рональду Боку, Эндрю Чиноффу, Полу А. Бристоу и Джону Байтвею за помощь в доработке документации.

Спасибо Тому Тану за сообщение о некоторых проблемах компилятора с бета-версиями MSVC V10 и MinGW-gcc-4.4.0 и за то, что многие настаивали на однородных часах<process_cpu_clock>.

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

For later releases
  • Включая секундомеры.
  • Добавить Пользователь определяет буквы на некоторое время.
  • Включите хроно::дата, определенная Говардом Хиннантомздесь.

PrevUpHomeNext

Статья Appendices раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 7. Boost.Chrono 2.0.5 может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 7. Boost.Chrono 2.0.5 ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 16:55:15/0.034897089004517/1