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

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

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

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

Сообщение Mikhail » 03.07.2015 16:30:21

скалогрыз писал(а):
Mikhail писал(а):FPC тоже не умеет. :( распознавание опткодов в BASM не в счет.

может быть и не умеет, но проект указанный выше , скомпилированный так
Код: Выделить всё
fpc -O3 -CfSSE3 -al testloop.dpr

выдаёт такой вот код:
Код: Выделить всё
# [21] f:=f*i;
   cvtsi2sdl   %eax,%xmm0
   mulsd   (%esp),%xmm0
   movsd   %xmm0,(%esp)
   cmpl   $1000,%eax
   jl   .Lj13

Если верить вики, что xmm0 был добавлен в расширение SSE, а инструкция mulsd movsd в SSE2. ...так что не знаю, верить глазам или нет...

Гм, а какой компилятор (версия) используете?
Для моего примера SSE задействуется?
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

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

Сообщение скалогрыз » 03.07.2015 16:31:33

Burster_TIL писал(а):Вот это и плохо, что если между той или иной строкой одинаковый код, но выполняется он по разному и есть не очень хорошо.

Это не плохо, это необходимо. Но необходимость опредляется компилятором.

Burster_TIL писал(а):Про разный код в случае разных компиляторов - это оно и так понятно.

Если понятно и так, то зачем эта тема? ;)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Mikhail » 03.07.2015 16:35:04

Вижу, но это же смешно :D при таком коде от этого толку - ноль
Код: Выделить всё
; [47] for k:=0 to n-1 do
      mov   dword ptr [esp+12],0
      dec   dword ptr [esp+12]
   ALIGN 4
@@j36:
      inc   dword ptr [esp+12]
; [48] c[i, j]:=c[i, j] + a[i, k]*b[k, j];
      imul   eax,ecx,800
      lea   ebx,dword ptr [edx+eax]
      imul   eax,ecx,800
      mov   esi,dword ptr [esp+8]
      lea   eax,dword ptr [esi+eax]
      mov   esi,dword ptr [esp+12]
      imul   esi,800
      mov   edi,dword ptr [esp+4]
      lea   esi,dword ptr [edi+esi]
      mov   edi,dword ptr [esp+12]
      movsd   xmm0,[eax+edi*8]
      mov   eax,dword ptr [esp]
      mulsd   xmm0,[esi+eax*8]
      mov   eax,dword ptr [esp]
      addsd   xmm0,[ebx+eax*8]
      imul   eax,ecx,800
      lea   eax,dword ptr [edx+eax]
      mov   ebx,dword ptr [esp]
      movsd   [eax+ebx*8],xmm0
      cmp   dword ptr [esp+12],99
      jl   @@j36
      cmp   dword ptr [esp],99
      jl   @@j31
      cmp   ecx,99
      jl   @@j28
; [50] end;
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

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

Сообщение скалогрыз » 03.07.2015 16:36:31

Mikhail писал(а):Гм, а какой компилятор (версия) используете?

2.6.4
Mikhail писал(а):Для моего примера SSE задействуется?

Не знаю. Я не силён в правильности (а главное уместности) применения SSE инструкций :)
Например, в моём примере быстродействия SSE не добавит, зато в более сложных вычисления вполне может.

Рекомендую сию тему (англ.) к прочтению. Тот же срач про "тормознутый" FPC, но в конце всё сводится к выставлению правильных ключей для компиляции.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Burster_TIL » 03.07.2015 16:44:33

скалогрыз писал(а):FPC без оптимизаций и без использования всяких там MMX или XMM или SSE (в которые делфи не умеет), выдаёт на гора
11000
а Delphi 7
18000
а какой-нить хитрый-Сишный компилятор, вообще бы выкинул бы весь цикл :mrgreen: вернув значение времени, примерно
1000,
а то и меньше.

скалогрыз
энтузиаст

Сообщения: 795
Зарегистрирован: 03.09.2008 02:36:48



Проверил. На данном коде Delphi-7 выдаёт 11325, а никак не 18000. А FPC выдаёт 11526 - то есть чутка медленней. Такие вот дела.

Добавлено спустя 1 минуту 9 секунд:
скалогрыз писал(а):Если понятно и так, то зачем эта тема? ;)


Разница может быть как + так и в -. За этим и тема. Или, тема не интересная?
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

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

Сообщение скалогрыз » 03.07.2015 16:52:52

Burster_TIL писал(а):Проверил. На данном коде Delphi-7 выдаёт 11325, а никак не 18000. А FPC выдаёт 11526 - то есть чутка медленней. Такие вот дела.

Я бы сказал, что это особенности процессора и реализации на нём FPU, но зная твою склонность к самостоятельной реализации, скажу, что такой результат получается в твоей реализации. И даже спрошу уточнающий вопрос - результат RDTSC ты выводишь на форму или в командную строку?

Burster_TIL писал(а):Разница может быть как + так и в -. За этим и тема. Или, тема не интересная?

Тема была бы интересная, если бы люди стали бы смотреть исходники FPC и обсуждать их, и править и слать патчи.

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

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

Сообщение Mikhail » 03.07.2015 17:01:37

скалогрыз писал(а):Но увы и ах, программисты уже давно не инженеры, а потребители. И на данный момент эта тема - пустое сотрясения воздуха, плавно перетекающее в обычный срач.


Если Вас интересует скорость, то Паскаль это плохой выбор, Вам нужно изучать С, С++, Fortran или соответствующий assembler. А вообще тему будущего Паскаля я уже тут поднимал, она безрадостна, в целом. :(
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

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

Сообщение Burster_TIL » 03.07.2015 17:04:37

скалогрыз писал(а):Тема была бы интересная, если бы люди стали бы смотреть исходники FPC и обсуждать их, и править и слать патчи.

Но увы и ах, программисты уже давно не инженеры, а потребители. И на данный момент эта тема - пустое сотрясения воздуха, плавно перетекающее в обычный срач.


Да, никакого срача. Я его, по крайней мере, не затевал. Долго и много пишу на Delphi-7. Последний проект так и вовсе монстровиднный на 400 тыс строк кода. Вот решил глянуть в в сторону FPC, хотя переносить на него будет не так и просто, если и соберусь. Слобал простой тестик чтобы проверить быстрее или нет, чтобы было понятно, стоят в это ввязываться или не стоит. Пока вижу что особо смысла нет.

Добавлено спустя 42 секунды:
Mikhail писал(а):Если Вас интересует скорость, то Паскаль это плохой выбор, Вам нужно изучать С, С++, Fortran или соответствующий assembler. А вообще тему будущего Паскаля я уже тут поднимал, она безрадостна, в целом. :(


Претендуете на роль Нострадамуса никак?

Добавлено спустя 1 минуту 50 секунд:
скалогрыз писал(а):Я бы сказал, что это особенности процессора и реализации на нём FPU, но зная твою склонность к самостоятельной реализации, скажу, что такой результат получается в твоей реализации. И даже спрошу уточнающий вопрос - результат RDTSC ты выводишь на форму или в командную строку?


Результат в D7 выводится в форму. В Tedit. Результат в FPC в текстовом режиме консольного приложения. А, это так важно, куда выводится результат?
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

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

Сообщение скалогрыз » 03.07.2015 17:10:48

Mikhail писал(а):Если Вас интересует скорость, то Паскаль это плохой выбор, Вам нужно изучать С, С++, Fortran или соответствующий assembler. А вообще тему будущего Паскаля я уже тут поднимал, она безрадостна, в целом.

Не согласен.
Паскаль язык компилируемый и в общем не зависит от всяких там виртуальных машин и сред, хотя по вкусу может и зависеть :D
И синтаксис языка никаких тормозов не накладывает на возможность компилятора оптимизировать код.

Вопрос скорости это вопрос компилятора и оптимизации кода.
Вот, например Florian, кто есть изначальный автор FPC, оптимизирует компилятор для обсчёта какого-то там очередного алгоритма хеширования. Как итог, обогнал по тестам даже Си.

Вывод, developers, developers, developers...

Просто это время такое. Мы больше привыкли потреблять, чем производить общественно полезный продукт (в нашем случае, общественно полезный код).
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Burster_TIL » 03.07.2015 17:13:10

скалогрыз писал(а):Но увы и ах, программисты уже давно не инженеры, а потребители.


Почти верно. Они потребители компилятора, а инженеры в других областях. Да, и это, на мой взгляд, нормально. Так и должно быть.
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

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

Сообщение скалогрыз » 03.07.2015 17:13:50

Burster_TIL писал(а):Результат в D7 выводится в форму. В Tedit. Результат в FPC в текстовом режиме консольного приложения. А, это так важно, куда выводится результат?

Да это важно. Как я постил раньше, оптимизатор делфи, может выкинуть инструкцию f:=f*i
В примере, который я прислал, он не может так сделать, потому что результат тоже выводится на экран.

Если ты будешь выводить результат f, после цикла куда-нибудь, то твои временные замеры, возможно, тоже поменяются.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Mikhail » 03.07.2015 17:14:43

Burster_TIL писал(а):Претендуете на роль Нострадамуса никак?


Для этого не нужно быть нострадамусом см.уже обсуждалось viewtopic.php?f=2&t=9478

Сам язык уже давно в кризисе, нормальных оптимизирующих компиляторов нет.
Delphi 7 неплох, но ему уже больше 10 лет и нет 64-разрядной версии и опять же только Intel, в наше время это очень плохо. Насчет качества компиляторов от Абракадары у меня большие сомнения. :(
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

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

Сообщение Burster_TIL » 03.07.2015 17:16:40

скалогрыз писал(а):Не согласен.
Паскаль язык компилируемый и в общем не зависит от всяких там виртуальных машин и сред, хотя по вкусу может и зависеть :D
И синтаксис языка никаких тормозов не накладывает на возможность компилятора оптимизировать код.

Вопрос скорости это вопрос компилятора и оптимизации кода.
Вот, например Florian, кто есть изначальный автор FPC, оптимизирует компилятор для обсчёта какого-то там очередного алгоритма хеширования. Как итог, обогнал по тестам даже Си.

Вывод, developers, developers, developers...

Просто это время такое. Мы больше привыкли потреблять, чем производить общественно полезный продукт (в нашем случае, общественно полезный код).


Автор FPC, конечно же может оптимизировать этот компилятор для своей задачи. И именно для неё он будет работать очень быстро. Для совершенно другой задачи может оказаться не так. И, что значит потреблять? Я вот сейчас пишу софт для своей скоростной камеры. Спрашивается, нужно ли мне колупаться в исходниках D7 или FPC? Нет, конечно. Да и не хватит у меня на это времени. У меня задача сделать ПО для данной камеры с тем или иным функционалом. Не потребить, а именно сделать. Не нужно так однобоко смотреть на вопрос.
Burster_TIL
новенький
 
Сообщения: 46
Зарегистрирован: 25.09.2013 02:05:28

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

Сообщение скалогрыз » 03.07.2015 17:17:38

Burster_TIL писал(а):Почти верно. Они потребители компилятора, а инженеры в других областях. Да, и это, на мой взгляд, нормально. Так и должно быть.

Ну тогда и веди себя как потребитель, воспринимай скорость работы программы как данное :mrgreen:
(что опять делает текущую тему быссмысленной).

Потому что, если ты хочешь докапаться до правды как и почему, тебе нужно стать инженером на уровне компилятора, а значит и беседа должна идти в соответсвующем русле. ;)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

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

Сообщение Mikhail » 03.07.2015 17:20:03

Burster_TIL писал(а):Я вот сейчас пишу софт для своей скоростной камеры. Спрашивается, нужно ли мне колупаться в исходниках D7 или FPC?

Но почему Паскаль!!!
Mikhail
энтузиаст
 
Сообщения: 562
Зарегистрирован: 24.10.2013 16:06:47

Пред.След.

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

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

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

Рейтинг@Mail.ru