Имеется программа под delphi, очень активно пользующаяся 64-битными вычислениями (тип int64 и производные от него, в основном битовые операции). Delphi в принципе неплохо оптимизирует код и в общем работает довольно шустро, но на каждую операцию над int64 все-таки тратится по 2 операции плюс накладные расходы. Поскольку под delphi 64-битного компилятора нет и очевидно нескоро появится (кстати оффтоп - если у кого есть доступ к тестовой версии delphi 64 был бы очень благодарен за нее) пару лет назад было решено скомпилить программу под FPC и посмотреть насколько будет ускорение от реальной 64-битности. Тогда FPC (версия 2.2 еще) выдал 64-битный код, который под Win64 работал даже медленнее чем эмуляция в Delphi. Ну ладно, думаю оптимизатор печальный и забыл. Недавно решил попробовать еще - может что изменилось, скачал версию 2.4, скомпилировал - никакой разницы, результаты один в один, и - медленнее чем 32-битный код в Delphi.
Возник вопрос - это нормально? Действительно FPC настолько медленный? Или в нем не реализована реальная 64-битность?
Проект компилировал в кросс-компиляторе под Win32, в режиме совместимости с Delphi (без него компилятор решил на что-то поругаться, хотя код в принципе прозрачный, без особых наворотов, мне лень было разбираться что ему не нравится). Пробовал различные варианты оптимизации - как мертвому припарки, результат один в один. Может что-то связано с тем что компиляция проходила на win32? Либо режим совместимости виноват? Может кто-нибудь посоветовать в каком направлении копать? Хочется все-таки получить реальный выигрыш от 64-битного компилятора...