Медленный компилятор FPC

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

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

Re: Медленный компилятор FPC

Сообщение Burster_TIL » 02.07.2015 17:11:38

скалогрыз писал(а):а в коде BigTest их нет вообще. И это причина тормозов - dword ptr [ebp-NNN] - заставляет процессор оперировать с памятью.
Тогда как BigTest оперирует не с памятью а исключительно с регистрами процессора.

Почему FPC так сделал. Обычно счётчики цикла лежат в регистре, а не памяти процессора, но т.к. у тебя есть вложенный цикл, то регистров (коих мало) на всё не хватит, и FPC генерирует код, который оперирует с памятью. Что вызывает "тормоза" но зато код работает.

В реальной жизни, когда цикл будет делать нечто большее, чем просто присваивать 0 в переменную a, оперирования с памятью не избежать вообще, и скорость сравняется и между циклами и между компиляторами (delphi и fpc).


Всё это классно и с ассемблером может на досуге посмотрю что-то. Но между Т1 и Т2 в обеих случая располагается один и тот же код. И этот один и то же код выполняется по разному. Вот это и удивляет. При чём с точки зрения производительности в Delphi что есть дополнительный вложенный цикл, что нет его результат один и тот же в районе 1970 тиков. В ХЕ2 скорость выполнения такой же программы и вовсе плавает от тех же 1970 до аж 10000. Да, есть вот какой вопрос. Как через буфер переносить куски кода в FPC? Его оболочка работает в текстовом режиме и данные буфера не переносятся.
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

Re: Медленный компилятор FPC

Сообщение скалогрыз » 02.07.2015 17:21:12

По первому вопросу, я отошлю на чтение про устройства языка компилятора. Например от Вирта что-нить.
Рекомендую почитать исходники FPC и иходники Delphi 7 (именно часть с компилятором, а не IDE). И для сравнения ещё исходники Delphi XE7 (исходники XE8 не доступны, а XE6 и ниже там не особо важные изменения).

Если читать лень, то я тогда сошлюсь на пост alex208210 с машинами.

Ну а про буфера, то почитай тут
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Медленный компилятор FPC

Сообщение bormant » 02.07.2015 17:23:29

Burster_TIL писал(а):Как через буфер переносить куски кода в FPC? Его оболочка работает в текстовом режиме и данные буфера не переносятся.

Возьмите любой удобный редактор для кода. Сборку запускайте из него или (если не умеет) из командной строки.
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: Медленный компилятор FPC

Сообщение Burster_TIL » 02.07.2015 17:38:31

скалогрыз писал(а):По первому вопросу, я отошлю на чтение про устройства языка компилятора. Например от Вирта что-нить.
Рекомендую почитать исходники FPC и иходники Delphi 7 (именно часть с компилятором, а не IDE). И для сравнения ещё исходники Delphi XE7 (исходники XE8 не доступны, а XE6 и ниже там не особо важные изменения).

Если читать лень, то я тогда сошлюсь на пост alex208210 с машинами.

Ну а про буфера, то почитай тут


Странно то, что в случае Delphi, "Вирт" ведёт себя по одному, а в случае FPC по другому. Читать исходники FPC и D7? Я что - псих? Про буфер как-то не очень понял. Необходим какой-то скрипт AutoHotkey. Через задницу как-то. Ровно как через это место был преподнесён пост от alex208210.
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

Re: Медленный компилятор FPC

Сообщение Лекс Айрин » 02.07.2015 17:39:27

Burster_TIL писал(а): Как через буфер переносить куски кода в FPC? Его оболочка работает в текстовом режиме и данные буфера не переносятся.

Edit/Copy to Windows (Paste from Windows)

ЗЫ: Создается впечатление, что вы не пытались изучать программу.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Медленный компилятор FPC

Сообщение Burster_TIL » 02.07.2015 17:46:18

Лекс Айрин писал(а):Edit/Copy to Windows (Paste from Windows)


О, уже кое что. А то отсылают каким-то скриптам. Видимо сами не знают такой опции оболочки. Времени сейчас точно на изучение FPC особо нет. Занят в других проектах и ознакамливаюсь с ним сейчас факультативно, ибо все проекты последние лет 10 делаю в D7.
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

Re: Медленный компилятор FPC

Сообщение Mikhail » 02.07.2015 17:53:18

Burster_TIL писал(а):
скалогрыз писал(а):а в коде BigTest их нет вообще. И это причина тормозов - dword ptr [ebp-NNN] - заставляет процессор оперировать с памятью.
Тогда как BigTest оперирует не с памятью а исключительно с регистрами процессора.

Почему FPC так сделал. Обычно счётчики цикла лежат в регистре, а не памяти процессора, но т.к. у тебя есть вложенный цикл, то регистров (коих мало) на всё не хватит, и FPC генерирует код, который оперирует с памятью. Что вызывает "тормоза" но зато код работает.

В реальной жизни, когда цикл будет делать нечто большее, чем просто присваивать 0 в переменную a, оперирования с памятью не избежать вообще, и скорость сравняется и между циклами и между компиляторами (delphi и fpc).


Всё это классно и с ассемблером может на досуге посмотрю что-то. Но между Т1 и Т2 в обеих случая располагается один и тот же код. И этот один и то же код выполняется по разному. Вот это и удивляет. При чём с точки зрения производительности в Delphi что есть дополнительный вложенный цикл, что нет его результат один и тот же в районе 1970 тиков. В ХЕ2 скорость выполнения такой же программы и вовсе плавает от тех же 1970 до аж 10000. Да, есть вот какой вопрос. Как через буфер переносить куски кода в FPC? Его оболочка работает в текстовом режиме и данные буфера не переносятся.

Оптимизатор FPC хуже чем Delphi, но и Ваш пример не совсем релевантен. Хотите сравнить, напишите что-то посложнее, например, перемножение двух матриц целочисленных и вещественных и сравнивайте. Решение системы ОДУ, тоже хороший тест, а также различные методы сортировки и поиска.
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Медленный компилятор FPC

Сообщение Лекс Айрин » 02.07.2015 18:00:54

Burster_TIL писал(а): Видимо сами не знают такой опции оболочки.

люди редко работают в ide-fpc. Зачем, если в лазарусе можно делать тоже с большим успехом?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Медленный компилятор FPC

Сообщение Burster_TIL » 02.07.2015 18:07:57

Лекс Айрин писал(а):люди редко работают в ide-fpc. Зачем, если в лазарусе можно делать тоже с большим успехом?


Это и так понятно. Решил поставить что попроще. По первым впечатлениям преимуществ оп быстродействию у FPC по отношению к D7 я пока не обнаружил.

Добавлено спустя 2 минуты 19 секунд:
[quote="Mikhail"]Оптимизатор FPC хуже чем Delphi, но и Ваш пример не совсем релевантен. Хотите сравнить, напишите что-то посложнее, например, перемножение двух матриц целочисленных и вещественных и сравнивайте. Решение системы ОДУ, тоже хороший тест, а также различные методы сортировки и поиска.

Ну это понятно, что тест синтетический. Попробую при наличии времени перенести часть ф-ций общего назначения из своих проектов в FPC и проверю как быстро они выполняются. Например медианная фильтрация фрагмента данных.
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

Re: Медленный компилятор FPC

Сообщение Mikhail » 02.07.2015 18:11:10

скалогрыз писал(а):иходники Delphi 7

а где их можно взять?
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Медленный компилятор FPC

Сообщение hinst » 02.07.2015 18:15:33

он не медленный.
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Медленный компилятор FPC

Сообщение Mikhail » 02.07.2015 18:20:53

Burster_TIL писал(а):По первым впечатлениям преимуществ оп быстродействию у FPC по отношению к D7 я пока не обнаружил.

Нет у него преимущества в быстродействии. Его преимущество в кроссплатформенности и бесплатности.
Delphi 7 и более поздние тоже не рекордсмены по части скорости генерируемого кода. Нужна скорость используйте Intel C или Intel Fortran компиляторы или ассемблер.
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Медленный компилятор FPC

Сообщение Burster_TIL » 02.07.2015 18:21:23

hinst писал(а):он не медленный.


Приведите пример D7 кода и точно такого же в FPC, который хотя бы на 10-20% будет быстрее.

Добавлено спустя 3 минуты 13 секунд:
Mikhail писал(а):Нет у него преимущества в быстродействии. Его преимущество в кроссплатформенности и бесплатности.
Delphi 7 и более поздние тоже не рекордсмены по части скорости генерируемого кода. Нужна скорость используйте Intel C или Intel Fortran компиляторы или ассемблер.


Кому что. Кроссплатформенность, а тем более бесплатность для меня ни когда не были критериями выбора. К слову, была как-то эпопея с TMT Pascal, который помимо того что был уже 32-х разрядным, был ещё и куда как шустрее TP7. Но, он появился поздновато. И, он был платным. Хотя, можно было его найти и бесплатно. Про изделия Intel - это может быть, но это совсем уж другие языки.
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

Re: Медленный компилятор FPC

Сообщение Mikhail » 02.07.2015 19:18:21

Burster_TIL писал(а):Про изделия Intel - это может быть, но это совсем уж другие языки.

Какая разница? Тем более не обязательно все писать на С, только критически важные части.
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Re: Медленный компилятор FPC

Сообщение alex208210 » 02.07.2015 19:22:15

Burster_TIL не буду вникать что больше для тебя проблема, понимать аналогии или принимать осознание своей глупости. Смысл в том что ты здесь занимаешься ерундой, и никому твои идеи не интересны. Если для тебя, элементарно, проблема платности не является проблемой когда ты это украл, то это говорит о том что уровень твоего развития.. в 5-7 классе.
alex208210
постоялец
 
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Пред.След.

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

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

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

Рейтинг@Mail.ru