На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
В этом разделе можно создавать темы, которые относятся к поколению 32-битных компиляторов.
Здесь решаются вопросы портирования кода из старого доброго Турбо Паскаля в FPC, TMT, VP, GPC компиляторы, а также особенностей программирования на них для Windows/Linux и других ОС.
Указывайте тип компилятора, его версию, а также платформу (Windows/Linux/..) компиляции, другими словами, Target.
Модераторы: volvo877
  
> Производительность компиляторов , Тесты для Delphi/FPC/TMT/VP/GPC
    Кто нибудь знает о наличии тестов, для проверки производительности 32-битных компиляторов паскаля? Очень хочется узнать насколько шустры современные паскалевские компиляторы :)
      mephis, а самому написать? ;)
      Вот это посмотри: Сравнение быстродействия различных компиляторов
        Следует учесть, что результаты подводились еще в 2003 году, а за это время много чего изменилось, включая появление новых версий.
        Где MMX/SSE/SSE2 test - ?
          matrix operations
          data transfer
          function calls, recursive function
          string operations
          ...

          It's still me. :)
            Сегодня помещу результаты тестирования скорости компиляторов Delphi/FPC/VP/GPC и, может, TMT, если мне пришлют его скомпилированный ЕХЕшник. Результаты обещают быть очень интересными... :rolleyes:

            Тестирование проводил с помощью SciMark 2.0, спортированного в Паскаль.
              ==== SciMark 2.0 benchmark ====

              1. Fast Fourier Transform (FFT)
              2. Jacobi Successive Over-relaxation (SOR)
              3. Monte Carlo integration
              4. Sparse matrix multiply
              5. dense LU matrix factorization

              [About SciMark 2.0]


              A composite score in approximate Mflops (Millions of floating point operations per second):
              -------------
              FPC 2.0.0
              -------------
              ExpandedWrap disabled
                Composite Score:          122.97
                FFT             Mflops:    48.79   (N=1024)
                SOR             Mflops:   239.02   (100 x 100)
                MonteCarlo:     Mflops:    12.13
                Sparse matmult  Mflops:   124.10   (N=1000, nz=5000)
                LU              Mflops:   190.80   (M=100, N=100)
                 
                -large
                Composite Score:           93.48
                FFT             Mflops:    13.26   (N=1048576)
                SOR             Mflops:   210.08   (1000 x 1000)
                MonteCarlo:     Mflops:    12.13
                Sparse matmult  Mflops:   105.70   (N=100000, nz=1000000)
                LU              Mflops:   126.21   (M=1000, N=1000)

              -------------
              Delphi 6
              -------------
              ExpandedWrap disabled
                Composite Score:          113.35
                FFT             Mflops:    61.75   (N=1024)
                SOR             Mflops:   222.61   (100 x 100)
                MonteCarlo:     Mflops:    19.43
                Sparse matmult  Mflops:    22.90   (N=1000, nz=5000)
                LU              Mflops:   240.04   (M=100, N=100)
                 
                -large
                Composite Score:           75.33
                FFT             Mflops:     8.11   (N=1048576)
                SOR             Mflops:   201.46   (1000 x 1000)
                MonteCarlo:     Mflops:    19.35
                Sparse matmult  Mflops:    22.63   (N=100000, nz=1000000)
                LU              Mflops:   125.13   (M=1000, N=1000)


              ------------
              VP 2.1
              -------------
              ExpandedWrap disabled
                Composite Score:           90.69
                FFT             Mflops:    35.60   (N=1024)
                SOR             Mflops:   174.16   (100 x 100)
                MonteCarlo:     Mflops:    10.50
                Sparse matmult  Mflops:   125.57   (N=1000, nz=5000)
                LU              Mflops:   107.63   (M=100, N=100)
                 
                -large
                Composite Score:           39.06
                FFT             Mflops:     9.89   (N=1048576)
                SOR             Mflops:    49.95   (1000 x 1000)
                MonteCarlo:     Mflops:    10.53
                Sparse matmult  Mflops:    96.37   (N=100000, nz=1000000)
                LU              Mflops:    28.54   (M=1000, N=1000)


              -------------
              GPC 20050331
              -------------
              ExpandedWrap disabled
                Composite Score:          302.10
                FFT             Mflops:   181.24   (N=1024)
                SOR             Mflops:   262.38   (100 x 100)
                MonteCarlo:     Mflops:    15.79
                Sparse matmult  Mflops:   448.57   (N=1000, nz=5000)
                LU              Mflops:   602.53   (M=100, N=100)
                 
                -large
                Composite Score:          109.90
                FFT             Mflops:    15.92   (N=1048576)
                SOR             Mflops:   232.47   (1000 x 1000)
                MonteCarlo:     Mflops:    15.85
                Sparse matmult  Mflops:   157.54   (N=100000, nz=1000000)
                LU              Mflops:   127.74   (M=1000, N=1000)


              -------------
              TMT 4.0
              -------------
              ExpandedWrap disabled
                Composite Score:          128.21
                FFT             Mflops:    37.71   (N=1024)
                SOR             Mflops:   251.69   (100 x 100)
                MonteCarlo:     Mflops:     9.18
                Sparse matmult  Mflops:   145.64   (N=1000, nz=5000)
                LU              Mflops:   196.85   (M=100, N=100)
                 
                -large
                Composite Score:           94.43
                FFT             Mflops:    13.61   (N=1048576)
                SOR             Mflops:   225.03   (1000 x 1000)
                MonteCarlo:     Mflops:     8.95
                Sparse matmult  Mflops:   103.02   (N=100000, nz=1000000)
                LU              Mflops:   121.57   (M=1000, N=1000)



              Результаты подводились на компьютере Pentium IV 1800 MHz 512KB/256KB L2 cache, Windows XP 5.1

              Добавлено

              На данный момент ведёт компилятор GPC (GNU Pascal) с большим отрывом от конкурентов, а за ним FPC (Free Pascal).
              Надо заметить, что этот тест только для чисел с плавающей точкой (Floating Point operations).
              Сообщение отредактировано: Romtek -

              Прикреплённый файлПрикреплённый файлscimark2_Benchmark.zip (10.1 Кбайт, скачиваний: 176)
                После проверки результатов для ТМТ выяснилось, что этот компилятор выходит на 2-е место. За ним, с небольшим отрывом, следует FPC.

                Добавлено
                Что самое интересное, Дельфи оказался в числе отстающих... А Virtual Pascal совсем не показал себя в этих тестах.
                Может в других тестах эти компиляторы покажут себя лучше. :rolleyes:

                Добавлено
                Я забыл указать ещё директиву {$apptype console} в исходниках.
                Она нужна для нормальной компиляции Дельфи и ТМТ.

                Вот добавился ещё тест для Дельфи 3...
                -------------
                Delphi 3
                -------------
                ExpandedWrap disabled
                  Composite Score:          123.15
                  FFT             Mflops:    43.61   (N=1024)
                  SOR             Mflops:   221.80   (100 x 100)
                  MonteCarlo:     Mflops:    19.61
                  Sparse matmult  Mflops:    85.27   (N=1000, nz=5000)
                  LU              Mflops:   245.48   (M=100, N=100)
                   
                  -large
                  Composite Score:           88.30
                  FFT             Mflops:     7.97   (N=1048576)
                  SOR             Mflops:   201.04   (1000 x 1000)
                  MonteCarlo:     Mflops:    19.52
                  Sparse matmult  Mflops:    86.01   (N=100000, nz=1000000)
                  LU              Mflops:   126.98   (M=1000, N=1000)


                Таким образом, ранние версии Дельфи оказываются быстрее чем новые.
                  Цитата Romtek @
                  После проверки результатов для ТМТ выяснилось, что этот компилятор выходит на 2-е место.

                  Что значит "после проверки"? Предыдущие результаты ты с потолка брал? Опять же... Какая версия использовалась? У меня, например, 3.90. Кто может сказать, на сколько он медленнее версии 4?
                    Цитата AlexQ @
                    Что значит "после проверки"?
                    Это значит то, что ТМТ для винды у меня не было, и, следовательно, и резултатов тестирования тоже.
                    Цитата AlexQ @
                    Предыдущие результаты ты с потолка брал?
                    С потолка я ничего не беру - это не про меня.

                    Цитата AlexQ @
                    Опять же... Какая версия использовалась?
                    Смотрим внимательнее...
                    Цитата Romtek @
                    -------------
                    TMT 4.0
                    -------------


                    Цитата AlexQ @
                    У меня, например, 3.90. Кто может сказать, на сколько он медленнее версии 4?
                    Гарантировать ничего не могу. Эти вопросы - к разработчику компилятора. Но, мне кажется, большого разброса данных быть не должно.

                    Добавлено
                    Хотя из описания компилятора вполне допустимо увеличение производительности:
                    Цитата
                    Изменения в компиляторе:

                    * Улучшено качество генерируемого кода.
                      Еще один тест, сравнивающий производительность компиляторов. В этом тесте сравнение производится по скорости следующих операций:
                      1. Доступ к члену класса.
                      2. Вызов пустого статического метода.
                      3. Вызов пустого динамического метода.
                      4. Быстрая сортировка массива (Quick Sort).
                      5. Пузырьковая сортировка массива(Bubble Sort)
                      6. "Древесная" сортировка массива (Tree Sort).
                      7. Вычисление 4500 цифр числа Пи.
                      8. Скорость конкатенации строк.
                      9. Тесты скорости вещественных вычислений.



                      Таблицы содержат средние значения после 4-х запусков теста.
                      (Процессор - Celeron 2000MHz, 256Мб RAM)
                      Гистограмму можно посмотреть здесь

                      FPC 2.0.0
                      ExpandedWrap disabled
                        Member Access Test:          12368 ms.
                        Method Call Test:            14249 ms.
                        Virtual Method Call Test:    20976 ms.
                        Quick Sort Test:              1204 ms.
                        Bubble Sort Test:            13163 ms.
                        Tree Test:                    1186 ms.
                        PI Computation Test:           998 ms.
                        String Concatenation Test:   18102 ms.
                        Floating-point Test:         27726 ms.
                        Strange atrr. Test:           9321 ms.


                      Delphi 6
                      ExpandedWrap disabled
                        Member Access Test:          6421 ms.
                        Method Call Test:            7774 ms.
                        Virtual Method Call Test:   11531 ms.
                        Quick Sort Test:              843 ms.
                        Bubble Sort Test:            6403 ms.
                        Tree Test:                    998 ms.
                        PI Computation Test:          765 ms.
                        String Concatenation Test:   1734 ms.
                        Floating-point Test:        42211 ms.
                        Strange atrr. Test:          8143 ms.


                      GPC 20050331
                      ExpandedWrap disabled
                        Member Access Test:          7704 ms.
                        Method Call Test:           10562 ms.
                        Virtual Method Call Test:   19547 ms.
                        Quick Sort Test:              891 ms.
                        Bubble Sort Test:            6953 ms.
                        Tree Test:                   1453 ms.
                        PI Computation Test:         1422 ms.
                        String Concatenation Test:    985 ms.
                        Floating-point Test:         1703 ms.
                        Strange atrr. Test:           187 ms.


                      Virtual Pascal 2.1
                      ExpandedWrap disabled
                        Member Access Test:          7031 ms.
                        Method Call Test:               0 ms.
                        Virtual Method Call Test:       0 ms.
                        Quick Sort Test:              610 ms.
                        Bubble Sort Test:            7750 ms.
                        Tree Test:                   1110 ms.
                        PI Computation Test:          625 ms.
                        String Concatenation Test:   2047 ms.
                        Floating-point Test:            0 ms.
                        Strange atrr. Test:         10468 ms.

                      Нулевые значения в тестах на скорость вызова статических и виртуальных методов (компилятор Virtual Pascal) говорят, видимо, о наличии проверки на "пустоту" метода, и вызовы таких методов просто игнорируются.


                      Для запуска программы потребуется создать в рабочей директории ZIP файл Q3.ZIP размером НЕ МЕНЕЕ 10 мегабайт (содержимое не имеет значения, но сжатие не должно быть минимальным, я использовал Normal).

                      Исходники теста (Паскаль):
                      Прикреплённый файлПрикреплённый файлfpc_bench.zip (4.56 Кбайт, скачиваний: 179)
                        Показатели для SciMark2 в виде диаграммы:
                        1. Общая скорость
                        2. Fast Fourier Transform (FFT)
                        3. Jacobi Successive Over-relaxation (SOR)
                        4. Monte Carlo integration
                        5. Sparse matrix multiply
                        6. dense LU matrix factorization

                        Прикреплённый файлПрикреплённый файлscimark2.PNG (5.88 Кбайт, скачиваний: 468)
                          Показатели для SciMark2 LARGE в виде диаграммы:
                          1. Общая скорость
                          2. Fast Fourier Transform (FFT)
                          3. Jacobi Successive Over-relaxation (SOR)
                          4. Monte Carlo integration
                          5. Sparse matrix multiply
                          6. dense LU matrix factorization

                          Прикреплённый файлПрикреплённый файлscimark2_large.PNG (6 Кбайт, скачиваний: 418)
                            Romtek и volvo877. Спасибо за тестирование. Оказывается GPC рвёт остальные компиляторы как грелки. А я почему-то считал, что эффективнее TMT и FPC ничего нету. Наверное стоит поближе присмотреться к этому GPC :yes:
                              Всё зависит от решаемых задач. Наибольщее количество задач можно решить с помощью FPC (имхо), т.к. он почти на 100% совместим с Дельфи и поэтому на нём можно компилировать большинство программ (не VCL), написанных для Дельфи. Есть ещё и визуальное проектирование GUI программ с помощью Лазаруса (совместим с VCL). В итоге, спектр решаемых задач очень расширяется.

                              Что касается GPC, ТМТ и VP - они подходят, в основном, для консольных программ, для написания библиотек и т.д. Кроме того, с помощью можно ТМТ создавать неплохие мультимедийные приложения благодаря развитому модулю Graph на основе DirectX и множестве сторонних библиотек для звука (применимы и к другим компиляторам).

                              Эти тесты показали преимущество GPC, в основном, в вычислениях, а в остальных у него результаты не не лучше (а то и хуже), чем у Дельфи. Короче, не всё так розово...
                              Рынок компиляторов Объектного Паскаля ведёт именно Дельфи, поэтому относительно него и следует сравнивать.

                              Надо выложить ещё свои результаты теста volvo877, а то там не хватает GPC. На ТМТ так и не удалось скомпилировать его тест.
                                Тесты volvo877 на моём компьютере:

                                Delphi 6
                                ExpandedWrap disabled
                                  Member Access Test:          5906 ms.
                                  Method Call Test:            7437 ms.
                                  Virtual Method Call Test:   10592 ms.
                                  Quick Sort Test:              672 ms.
                                  Bubble Sort Test:            5875 ms.
                                  Tree Test:                    484 ms.
                                  PI Computation Test:          749 ms.
                                  String Concatenation Test:   1640 ms.
                                  Floating-point Test:         1172 ms.
                                  Strange atrr. Test:          6000 ms.


                                FPC 2.0.0
                                ExpandedWrap disabled
                                  Member Access Test :         9390 ms.
                                  Method Call Test:           11000 ms.
                                  Virtual Method Call Test:   14186 ms.
                                  Quick Sort Test:              936 ms.
                                  Bubble Sort Test:           10562 ms.
                                  Tree Test:                    579 ms.
                                  PI Computation Test:         1030 ms.
                                  String Concatenation Test:  14921 ms.
                                  Floating-point Test:        24923 ms.
                                  Strange atrr. Test:          7701 ms.


                                GPC 20050331

                                ExpandedWrap disabled
                                  Member Access Test:          7422 ms.
                                  Method Call Test:           10016 ms.
                                  Virtual Method Call Test:   17843 ms.
                                  Quick Sort Test:              688 ms.
                                  Bubble Sort Test:            5453 ms.
                                  Tree Test:                    657 ms.
                                  PI Computation Test:         1109 ms.
                                  String Concatenation Test:    922 ms.
                                  Floating-point Test:         1562 ms.
                                  Strange atrr. Test:           172 ms.


                                VP
                                ExpandedWrap disabled
                                  Member Access Test:          8843 ms.
                                  Method Call Test:            8641 ms.
                                  Virtual Method Call Test:   10609 ms.
                                  Quick Sort Test:              813 ms.
                                  Bubble Sort Test:            8031 ms.
                                  Tree Test:                    656 ms.
                                  PI Computation Test:          797 ms.
                                  String Concatenation Test:   5406 ms.
                                  Floating-point Test:        25344 ms.
                                  Strange atrr. Test:         25922 ms.



                                Результаты подводились на компьютере Pentium IV 1800 MHz 512KB/256KB L2 cache, Windows XP 5.1

                                Добавлено
                                По этим тестам Дельфи - бесспорный лидер. А тот же FPC - показал худшие результаты в большинстве тестов.
                                  А есть результаты сравнения работы функций ввода/вывода, работы с сокетами? Уверен что там слабое место многих компиляторов ;)
                                  Сообщение отредактировано: Romtek -
                                    Цитата STAKANOV @
                                    А есть результаты сравнения работы функций ввода/вывода, работы с сокетами? Уверен что там слабое место многих компиляторов
                                    У нас в наличии таковых нет. Опубликованные тесты были переведены с языков C/C++. Думаю, что Дельфи должен победить в тестах на ввод/вывод.
                                      Народ, а никто не тестировал Delphi 2006 - там говорят, слегка прокачали компилятор, и Memory Manager новый...
                                      Сообщение отредактировано: TheValik -
                                        Цитата
                                        Что касается GPC, ТМТ и VP - они подходят, в основном, для консольных программ, для написания библиотек и т.д.

                                        Перед такими закидонами надо ИМХО писать, а то наезд на PAS какой-то получается >:(.
                                          Ну да, ТМТ там "вышел на второе место", а в следующих двух тестах не участвовал.. Что можно после этого говорить об объективности?
                                            Цитата KIA @
                                            Что можно после этого говорить об объективности?
                                            У тебя есть в наличии версия TMT, позволяющая компилировать под Win32? You Are Welcome! Прогони тесты на всех компиляторах, и опубликуй результаты.

                                            Мы просили людей, у которых есть TMT Multitarget принять участие в тестировании, как видишь, откликнулся мало кто. Так
                                            Цитата KIA @
                                            Что можно после этого говорить об объективности?
                                              Вот тут возьми
                                              http://arsuit.narod.ru/programming.htm
                                                Давать ссылки на варез не нужно. Ты просто скопилируй эти тестовые программы в ТМТ и выложи их сюда. Мы сами протестируем. Я пробовал скомпилировать, но с этим компилятором возникло много проблем, из-за чего я не стал с ним заморачиваться.
                                                  Цитата KIA @
                                                  Вот тут возьми
                                                  http://arsuit.narod.ru/programming.htm
                                                  Цитата Romtek @
                                                  Давать ссылки на варез не нужно.
                                                  Тем более, что в указанном месте ссылка идет ко мне на сайт, где ТМТ нет.

                                                  Цитата Romtek @
                                                  Я пробовал скомпилировать
                                                  Romtek, ты себе устанавливал ТМТ? Какого рода были проблемы?
                                                    Цитата KiRiK @
                                                    ты себе устанавливал ТМТ? Какого рода были проблемы?
                                                    Это были всякие несовместимости с Delphi, в общих словах. Устанавливал только ради этого.
                                                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                    0 пользователей:


                                                    Рейтинг@Mail.ru
                                                    [ Script execution time: 0,1010 ]   [ 17 queries used ]   [ Generated: 27.04.24, 05:25 GMT ]