Это может произойти для программ, которые используют много структур данных с большим количеством указателей, поскольку указатель составляет 8 байт в 64-разрядной версии, тогда как в 32-разрядной - 4 байта.Узким местом в коде погони за указателями является отсутствие кеша.В пределе, когда 100% вашего кода гонятся за указателями, вы получите вдвое больше пропусков кэша на 64-битной, чем на 32-битной, отсюда и 2-кратное замедление.
Однако для других типов программ64-разрядная может быть быстрее, чем 32-разрядная, по крайней мере, на x86 / x64.x64 имеет в два раза больше регистров общего назначения, чем 32-битные x86, более новые инструкции, такие как SSE / SSE2, гарантированно будут доступны на x64, но не на 32-битных x86, и с большим адресным пространством вы можете делать различные компромиссы между скоростью и пространством, напримеркак сохранение вместо повторного вычисления значений или отображения памяти в большие файлы.