Qual é o impacto no desempenho do uso de int64_t em vez de int32_t em sistemas de 32 bits?

Nossa biblioteca C ++ usa atualmente time_t para armazenar valores de tempo. Estou começando a precisar de precisão de sub-segundo em alguns lugares, então um tipo de dados maior será necessário de qualquer maneira. Além disso, pode ser útil contornar o problema do ano 2038 em alguns lugares. Então, estou pensando em mudar completamente para uma única classe Time com um valor int64_t subjacente, para substituir o valor time_t em todos os lugares.

Agora eu estou querendo saber sobre o impacto no desempenho de tal alteração ao executar este código em um sistema operacional de 32 bits ou CPU de 32 bits. IIUC o compilador irá gerar código para executar aritmética de 64 bits usando registradores de 32 bits. Mas se isso for muito lento, talvez precise usar uma maneira mais diferenciada de lidar com valores de tempo, o que pode tornar o software mais difícil de manter.

O que me interessa:

quais fatores influenciam o desempenho dessas operações? Provavelmente a versão do compilador e do compilador; mas o sistema operacional ou a CPU faz / influencia esse modelo também? Um sistema normal de 32 bits usa os registros de 64 bits dos processadores modernos?quais operações serão especialmente lentas quando emuladas em 32 bits? Ou que quase não terá desaceleração?Há algum resultado de referência existente para usar int64_t / uint64_t em sistemas de 32 bits?Alguém tem experiência própria sobre esse impacto no desempenho?

Estou mais interessado em g ++ 4.1 e 4.4 no Linux 2.6 (RHEL5, RHEL6) em sistemas Intel Core 2; mas também seria bom saber sobre a situação de outros sistemas (como Sparc Solaris + Solaris CC, Windows + MSVC).

questionAnswers(4)

yourAnswerToTheQuestion