2015-03-11 2 views
0

В C++ std :: time_t и std :: chrono :: time_point являются классами для хранения даты и времени. Эффективно ли использовать time_point для хранения времени. Кажется, что time_point поддерживает больше функций, будет ли она менее эффективной при использовании по сравнению с time_t? О том, насколько большой объем памяти является экземпляром time_point? Каков размер экземпляра time_t?Эффективность использования time_t и time_point в C++

+1

действительно ли это имеет значение? вы выделяете так много структур «time_point», что это становится узким местом памяти? –

+0

Если размер экземпляра time_point велико, копирование экземпляров time_point может сильно повлиять на время обработки, если мы используем структуры данных STL, которые хранят классы, содержащие экземпляры time_point – ysrhung

+1

, затем сравнивают его. (если вы не оценили это, то, скорее всего, это не имеет значения.) Кстати, аргумент «копирование», вероятно, был оправдан пару десятилетий назад, но в наши дни недостатки кэша и неудачи в прогнозировании ветвлений доминируют над узкими местами , –

ответ

1

Эффективно использовать time_point для хранения времени.

Да, он просто содержит одно числовое значение.

Похоже, что time_point поддерживает больше функций, будет ли он менее эффективным при использовании по сравнению с time_t?

Почему вы так думаете? Не виртуальные функции не увеличивают размер объекта, а простые должны быть встроены, чтобы они могли быть такими же эффективными, как беспорядок с числовым значением напрямую.

О том, как большой размер памяти является экземпляром time_point?

Такой же размер, как и числовой тип, который вы ему сказали. Вероятно, 64 бит, если вы использовали один из типов продолжительности удобства, например seconds. Обратитесь к sizeof, если это имеет значение.

Каков размер экземпляра time_t?

Unspecified, обычно 32 или 64 бит. Обратитесь к sizeof, если это имеет значение. Если это 32, то через пару десятилетий вы столкнетесь с проблемой.

Смежные вопросы