Как влияет на производительность использование int64_t вместо int32_t в 32-разрядных системах?

Наша библиотека C ++ в настоящее время использует time_t для хранения значений времени. Я'Я начинаю нуждаться в точности до секунды в некоторых местах, поэтому в любом случае потребуется больший тип данных. Кроме того, может быть полезно обойти проблему Года-2038 в некоторых местах. Так что я'Я думаю о полном переключении на один класс Time с базовым значением int64_t, чтобы заменить значение time_t во всех местах.

Сейчас я'Меня интересует влияние такого изменения на производительность при запуске этого кода в 32-битной операционной системе или 32-битном процессоре. IIUC компилятор сгенерирует код для выполнения 64-битной арифметики с использованием 32-битных регистров. Но если это слишком медленно, мне, возможно, придется использовать более дифференцированный способ работы со значениями времени, что может затруднить обслуживание программного обеспечения.

Что я'меня интересует:

Какие факторы влияют на выполнение этих операций? Вероятно, версия компилятора и компилятора; но влияет ли на это операционная система или производитель / модель процессора? Будет ли обычная 32-разрядная система использовать 64-разрядные регистры современных процессоров?какие операции будут особенно медленными при эмуляции на 32-битной версии? Или у которых почти не будет замедления?Существуют ли какие-либо результаты тестов для использования int64_t / uint64_t в 32-битных системах?у кого-нибудь есть собственный опыт об этом влиянии на производительность?

Я в основном заинтересован в g ++ 4.1 и 4.4 в Linux 2.6 (RHEL5, RHEL6) в системах Intel Core 2; но было бы также неплохо узнать о ситуации для других систем (например, Sparc Solaris + Solaris CC, Windows + MSVC).

Ответы на вопрос(4)

Ваш ответ на вопрос