Компиляция FPC под Win64

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Компиляция FPC под Win64

Сообщение crat » 24.02.2010 11:48:49

Имеется программа под 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-битного компилятора...
crat
незнакомец
 
Сообщения: 3
Зарегистрирован: 24.02.2010 11:17:02

Re: Компиляция FPC под Win64

Сообщение Max Rusov » 24.02.2010 13:05:52

Вряд ли вы получите выигрыш от работы с 64-х разрядными регистрами, IMHO это копейки. А компилятор в FPC64 менее оптимальный - факт.
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: Компиляция FPC под Win64

Сообщение crat » 24.02.2010 13:31:30

бОльшая часть вычислительных ресурсов процессора (у меня) тратится именно на вычисления с int64, а при работе с 32-битными регистрами каждую операцию компилятору приходится дублировать - для старших и младших разрядов. В сравнениях чуть меньше, в некоторых других операциях чуть больше. Я конечно не жду двукратного ускорения, ибо в алгоритме есть и другая работа, но все равно наивно полагал что перекомпиляция проекта под 64-битную систему (все-таки используется int64!) ну хотя бы медленнее чем под 32 битами не работала...

Выход получается только один - переписывать под Си и пробовать там?...
crat
незнакомец
 
Сообщения: 3
Зарегистрирован: 24.02.2010 11:17:02

Re: Компиляция FPC под Win64

Сообщение Max Rusov » 24.02.2010 14:15:00

Если возможно, приведите пример алгоритма, на котором наблюдается проигрыш. Было бы интересно посмотреть.
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Re: Компиляция FPC под Win64

Сообщение Brainenjii » 24.02.2010 17:19:34

И ключи компилятора ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Компиляция FPC под Win64

Сообщение crat » 02.03.2010 05:58:51

Поставил Win64, откомпилировал заново, вроде все как и должно быть, ускорение около 45% (-O3) по сравнению с 32-битной версией из-под Dephi.
Непонятно правда почему в редакторе нет target:win64, только кроссом можно скомпилировать из командной строки, правда при попытке сделать whole оптимизацию начинает ругаться на отсутствие необходимых запчастей, но в общем прогресс уже радует :)
crat
незнакомец
 
Сообщения: 3
Зарегистрирован: 24.02.2010 11:17:02


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru
cron