Конференция "FreePascal" » производительность [FreeBSD]
 
  • ev (18.01.05 22:34) [0]
    стоит ли использовать freepascal в приложениях требующих большой производительности? или стоит бросить эту затею и писать на сях?

    и судя по веткам в форуме, я понял, что исполняемые файлы отличаются большой прожорливостью памяти?
  • cyborg © (19.01.05 08:25) [1]
    Нормально там всё, для особой производительности используй встроенный ассамблер. Прожорливости памяти не наблюдал.
  • KA_ © (19.01.05 09:29) [2]
    Приложения, требующие большой производительности, можно прекрасно писать и на Delphi и на FreePascal. Просто для этого надо обладать определенным запасом знаний о языке. Не думаю, что новичек в C++ качественно напишет высокопроизводительное приложение :)
    Поэтому можно смело брать FPC и приниматься за дело.
  • ev (19.01.05 09:39) [3]
    поясню свои опасения, а вы скажите наскольно я прав (и почему) :)

    размер EXE файла значительно превосходит Delphi'вый, а значит
    1. он загрузится в память, а значит займет больше места в памяти (т.е. прожорливый)
    2. больше кода - больше машинных кодов - больше тактов для вополнения этого кода (т.е. медленный)
  • cyborg © (19.01.05 09:44) [4]

    > [3] ev   (19.01.05 09:39)
    > размер EXE файла значительно превосходит Delphi'вый,

    Значительно это как?

    Глянь пример с мухами, там скомпилено (пример мухи) в Дельфи и во Фрипаскале, разница 12 килобайт, скорость одна и та же.

    CyborgEngine2D
    http://www.cyborghome.ru/index.php?&id=sources
  • cyborg © (19.01.05 09:46) [5]

    > больше кода - больше машинных кодов - больше тактов для
    > вополнения этого кода

    Это не всегда верно ;)
  • KA_ © (19.01.05 09:50) [6]
    2. больше кода - больше машинных кодов - больше тактов для вополнения этого кода (т.е. медленный)

    Во-первых, вспомним, что exe содержит не только исполняемый код, но и ресурсы.
    Во-вторых, не весь исполняемый код обязательно исполниться при запуске программы :)
    В-третьих, FPC как и Delphi впихивает в код много лишнего.

    Т.е. размер exe при сравнении C++ и FreePascal врядли можно связывать с производительностью.
  • Ivan Shikhalev (19.01.05 12:39) [7]
    Если приложение требует высокой производительности, то размер ехешника и прочее - детский лепет какой-то. Когда производительность критична - все упирается в алгоритмы и оптимизацию критических кусков - независимо от языка и компилятора самые критичные участки пишутся на ассемблере.

    А если разница в размере исполняемого файла стоит того, чтоб на нее обращать внимание, значит более серьезных требований (таких как производительность) нетути :)
  • ev (19.01.05 19:26) [8]
    порылся по сети - нашел два источника, причем у них противоположные мнения о производительности... посмотрим что будет на самом деле :)

    всем спасибо за ответы...
  • Некто (14.02.05 15:49) [9]
    у меня есть .ехе который весит чуть больше 600 мг. (на Visual FoxPro скомпилирован) работает мгновенно, так что нет смысла говорить о том что чем больше .ехе, тем больше памяти он требует и ресурсов процессора соответственно
  • Anatoly Podgoretsky © (15.02.05 22:14) [10]
    У тебя неверное представление о загрузке программ в Виндуос, они вообще не загружаются в память, а только мапируются. В память загружаются только нужные страницы и то временно.
  • TUser © (18.02.05 11:37) [11]

    > У тебя неверное представление о загрузке программ в Виндуос,
    > они вообще не загружаются в память, а только мапируются.
    > В память загружаются только нужные страницы и то временно.

    Вот он большой фрипаскалевский экзешник ASPack'ом посжимает, и тю-тю маппинг
  • ArtHome (22.11.07 19:41) [12]
    Хех, поставил себе лазарус 0.9.24 и сделал тестовый примерчик, одновременно и под делфи11 (2007). Ну на размере я останавливаться не стану, видел уже даже графики сферических коней в вакууме с пририсованными названиями про то, как в "настоящих больших приложениях лазарь обгоняет кайликс из-за меньшей скорости роста экзешника", демонстрирующие очередной раз, как силы добра (религиозных убеждений) побеждают силы разума.

    Я создал пустую форму и поместил на неё кнопку, а в обработчик записал следующий код:
    === begin clipboard ===
    procedure TForm1.Button1Click(Sender: TObject);
    var
     i : integer;
     st, et : DWORD;
    begin
     st := GetTickCount;

     for I := 0 to MAXINT do;

     et := GetTickCount;
     ShowMessage(IntToStr(et - st));
    end;
    === end clipboard ===

    Экзешник от Лазаря, что оригинальный 4-х метровый, что обстрипленный работает примерно в 9 раз медленнее делфёвого. Установка в делфях галочки "optimization" не помогла - всё равно она работает в 9 раз быстрее. Что я делаю неправильно и как мне тормознуть делфи?...)

    PS Возможно кто-то подумает, что пустой цикл это какой-то неудачный пример, но первоначально я вставил в лазаря кусок нормального кода, а увидев, что он тормозит, решил что какая-то компонента написана неэффективно. Дай думаю, найду её, перепишу и внесу благой вклад. Методом исключений я выяснил, что неэффективных компонент выявить не удалось.

    PSS будучи сторонником сил добра могу заявить крутым программерам на лазаре, неосилившим кучу текста сверху - неэффективных компонент в лазаре нет, можно писать игры не только на опенГлю, но и на лсл. Хех.
  • Alx2k (28.11.07 00:12) [13]
    Проверил ваш код по сравнению с delphi 6, результаты весьма близкие
    Lazarus 48840
    Delphi 46587
    Так что по производительности вполне сопоставимо с delphi
  • Nil (28.11.07 02:50) [14]
    Delphi стоит баснословно дорого(потому что у меня денег нет вообще), а lazarus(точнее отладчик GDB) в висте не работает. Всё никак не могу сделать так, чтобы работали одновременно бесплатные отладчики и виста(на данный момент дешевле из виндов ничего не шашел, тем более нужен DX10). А делать проги под висту на линуксе по мне так излишне, проще подождать новый GDB.
    Как я понял, лишний размер берётся от того, что FPC ещё бесконечно сырой, и в целях упрощения себе жизни его разработчики пока этой проблемой не занимаются. Всё что можно сделать - strip и upx.
    Разница в скорости вполне может быть и в 9 раз - всё зависит от конкретных настроек, лазарь в этм деле спец. может выдать код любой степени тормознутости, надо только пару флажков убрать/поставить :)
  • pool2004 (28.11.07 12:27) [15]
    Nil  (28.11.07 02:50) [14]
    Delphi стоит баснословно дорого


    А что, разве Turbo Delphi (урезанный BDS2006) перестал быть бесплатным?
 
Конференция "FreePascal" » производительность [FreeBSD]
Есть новые Нет новых   [118665   +33][b:0][p:0.001]