powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Бенчмарки C#, C++, Java, Delphi
25 сообщений из 265, страница 3 из 11
Бенчмарки C#, C++, Java, Delphi
    #34429862
LMM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А здесь исходники и постановка задачи для делфи и c#
/topic/241745&pg=18
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34429922
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раз здесь тема про бенчмарки, спрошу:
Кто-нибудь может объяснить, почему следующий код, скомпилированный в Delphi 4,5,6 работает ровно в 2 (два) раза быстрее, чем этот же код, скомпилированный в Delphi 7 и 2006.
Например, на Athlon X23800+ на номинале время выполнения соответственно 930 и 1860 мсек для razmer=11.
Кстати, может кто перепишет его на C, интересно сравнить. Это алгоритм перебора всех возможных перестановок элементов массива.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
program Test;
{$APPTYPE CONSOLE}
uses
  Sysutils, Windows;

var
  razmer:integer;
  b:array[ 1 .. 20 ] of integer;
  Time1,Time2,nomvar,d,m,kl,min,obmen:integer;
begin
  razmer:= 11 ;
  for d:= 1  to  20  do
    b[d]:=d;
  nomvar:= 0 ;
  Time1:=GetTickCount;
  while True do
    begin
      nomvar:=nomvar+ 1 ;
      for m:=razmer downto  2  do
        if b[m]>b[m- 1 ] then
          break;
      if m= 1  then
        Break;
      obmen:=m- 1 ;
      for min:=obmen+ 1  to razmer do
        if (b[min]<b[m]) and (b[min]>b[obmen]) then
          m:=min;
      min:=b[obmen];
      b[obmen]:=b[m];
      b[m]:=min;
      for d:=obmen+ 1  to razmer- 1  do
        begin
          m:=d;
          for kl:=d+ 1  to razmer do
            if b[kl]<b[m] then
              m:=kl;
          min:=b[m];
          b[m]:=b[d];
          b[d]:=min;
        end;
    end;
  Time2:=GetTickCount;
  Writeln('Count: '+IntToStr(nomvar));
  Writeln('Time: '+IntToStr(Time2-Time1)+'(ms)');
  Readln;
end.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34429950
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Yuric74]Кто-нибудь может объяснить, почему следующий код, скомпилированный в Delphi 4,5,6 работает ровно в 2 (два) раза быстрее, чем этот же код, скомпилированный в Delphi 7 и 2006.
Например, на Athlon X23800+ на номинале время выполнения соответственно 930 и 1860 мсек для razmer=11.
[/quit]
Юра, приведи статистику для времени хотя-бы на три порядка больше. А то непонятно, что мы вообще замеряем: время работы алгоритма, или какие-то инерционные процессы в ОС/Железе.

И полный перечень опций компиллятора для обоих случаев приведи.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34429973
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
приведи статистику для времени хотя-бы на три порядка больше
Привожу: (снято только что)
Для razmer=12
Delphi 5 - Count: 479001600 Time: 10812(ms)
Delphi 2006 - Count: 479001600 Time: 21406(ms)

Для razmer=13
Delphi 5 - Count: 1932053504 Time: 142782(ms)
Delphi 2006 - Count: 1932053504 Time: 277125(ms)

Для бОльших значений ждать неприлично долго.

Опции из .cfg?
Если да, то вот они

Delphi 5
-$A+ -$B- -$C+ -$D+ -$E- -$F- -$G+ -$H+ -$I+ -$J+ -$K- -$L+ -$M- -$N+ -$O+ -$P+ -$Q- -$R- -$S- -$T- -$U- -$V+ -$W- -$X+ -$YD -$Z1 -cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+ -W+ -M
-$M16384,1048576
-K$00400000

Delphi 2006
-$A4 -$B- -$C+ -$D+ -$E- -$F- -$G+ -$H+ -$I+ -$J- -$K- -$L+ -$M- -$N+ -$O+ -$P+ -$Q- -$R- -$S- -$T- -$U- -$V+ -$W+ -$X+ -$YD -$Z1 -cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+ -W+ -M
-$M16384,1048576
-K$00400000
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430060
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleX AklinВ Вашем коде есть не понятное место:
Код: plaintext
1.
2.
a[j] = a[i];
a[j] = k;


епта, просто ошибся, суть мало меняется.

7% прибавить к тому, что было
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430150
OracleX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AklinРезультат для C++ получен на той же машине, где производился delphi-тест?
Yuric74Ваш тест у меня для Delphi5 тоже быстрее на 30%, чем для Delphi7.
Причина - генерируется код, который лучше использует регистры :(
Оптимизация включена, но компилятор D7 делает такой же код,
что и при отключенной оптимизации.
Вот не ожидал от D7 такого, а от D2006 (сам не тестил) и подавно .

На Вашем тесте D7 без оптимизации делает код чуть лучше, чем D5 без оптимизации.

Парадоксально, но тест с LZMA для Delphi5 выполняется с той же скоростью, что и для Delphi7.
Для D7 разница с оптимизатором и без него заметна (с оптимизатором быстрее на 20%).
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430153
Master Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuric74Раз здесь тема про бенчмарки, спрошу:
Кто-нибудь может объяснить, почему следующий код, скомпилированный в Delphi 4,5,6 работает ровно в 2 (два) раза быстрее, чем этот же код, скомпилированный в Delphi 7 и 2006.


Sysutils напиши вот так - SysUtils и заработает на той же скорости!
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430164
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OracleXВаш тест у меня для Delphi5 тоже быстрее на 30%, чем для Delphi7.
У меня на D7 работал в 2 раза медленнее, чем в D5. Но у меня на D7 не стояли сервис-паки (это было несколько лет назад).
OracleXПарадоксально, но тест с LZMA для Delphi5 выполняется с той же скоростью, что и для Delphi7.
Да, и в D2006 тоже.
Кстати, если отключить оптимизацию, то код выполняется примерно одинаково по времени, правда еще медленнее.
Master AlexSysutils напиши вот так - SysUtils и заработает на той же скорости!
Попробовал - не помогло :)

А на С, может, кто перепишет, а то я в нем не силен. Интересно сравнить.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430169
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OracleXДля D7 разница с оптимизатором и без него заметна (с оптимизатором быстрее на 20%).
Для моего кода разница в D5 с оптимизацией и без составляет почти 2,68 раза.
В D2006 - всего 1,33.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430178
LMM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to OracleX
Не обращай внимания на Aklin, у него свои алгоритмы, да и по-моему не втыкает что здесь проиcходит, потому как его любимый форум - http://sql.ru/forum/actualtopics.aspx?bid=16

P/S
Для Aklin
1) Оптимизация алгоритма и кода - это не одно и тоже!
2) какого хрена ты туда прописал
Код: plaintext
1.
2.
3.
4.
for (i= 0 ; i<SIZE; i++)
	{
		a[i] = (clock() <<  16 ) + rand();
	}

а не
Код: plaintext
1.
2.
for (int i =  0 ; i <  200000 ; i++)
    arr[i] = (int)((i %  9 ) *  sinf(i));
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430516
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleX AklinРезультат для C++ получен на той же машине, где производился delphi-тест?


у меня нет делфей, т.к. я не считаю нормальными продукты борланда после BC 3. на случай делфи я использую VB. на случай серьезных программ - си. (ну и сипп, если кто-то считает, что надо два плюса все время приписывать).

если вы пришлете EXE который укажет время (ЧЕСТНО ТОЛЬКО) что вывешу то, что он мне показал.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430610
OracleX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, разработчики Delphi сознательно не напрягаются
по поводу оптимизации работы с массивами чисел.
Как показал тест, даже убирают дорогостоящую оптимизацию из новых версий.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430643
mrDOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из всей дискуссии понял только одно все Delphi после 6-й версии - кака
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430721
OracleX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrDOS
Поясните, чем Delphi 6 лучше, чем Delphi 2007 ?
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430729
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Master AlexМне кажется, что было бы еще интересно прогнать Java тест на одной и той же машине под Win и Linux - чтобы сравнить и скорость платформ.и под вайном проверить :)
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34430820
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас попробовал свой код на Intel. Celeron D 2,53ГГц, разогнанный до 3,16ГГц (шина 166).
Для razmer=12
D6 - Count: 479001600 Time: 11125(ms)
В2006 - Count: 479001600 Time: 14593(ms)
Получается, что код D2006 оптимизирован на Intel?

Если в коде переменную kl заменить на min в последнем цикле, то получим еще небольшой выигрыш во времени выполнения.
И я не возьмусь утверждать, что Delphi после 6 версии стал хуже. Просто код очень специфичный. Постоянный доступ к одному массиву через три переменные - достаточно редко, ИМХО.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34432082
vitalek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OracleX
Yuric74Ваш тест у меня для Delphi5 тоже быстрее на 30%, чем для Delphi7.
Причина - генерируется код, который лучше использует регистры :(


Да, я тоже посмотрел в окне CPU на генерируемый компилятором код. Сравнивал D6 и D2006. Ну что тут можно сказать... выходит, ребята из Borland/CodeGear просто забили на оптимизацию аж в 2002-м году:( Понятно, почему дела у них идут неважно - вместо того, чтобы сосредоточиться на чем-то одном и основательно развивать флагманский продукт, начинаются метания и эксперименты: Delphi for PHP, Delphi for Piton и т.д. Видимо, не за горами появление Delphi for 1C Оно-то конечно понятно, бабла бы срубить по-быстрому, но как можно сознательно ухудшать изделие - вообще в голове не укладывается. Зато сколько было криков при выходе Delphi 7: компилятор переписали и т.д. Действительно, переписали... Писатели, блин:(
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34432104
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitalekДействительно, переписали... Писатели, блин:(

Расслабился, ей богу. Тебе сильно ведомы причины, почему они сделали именно так?
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34432159
vitalek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grexhide vitalekДействительно, переписали... Писатели, блин:(

Расслабился, ей богу. Тебе сильно ведомы причины, почему они сделали именно так?
Не понял... Кто расслабился?
И каковы же, интересно, причины по которым они сделали так? Трудно было оставить как есть? Надо было шаловливыми ручонками там поковырять? Причина по ходу одна: в 8-й версии они вообще собрались Win32 похоронить и забросить развитие соответствующего компилятора. Вспомните, как они .NET пропихивали и удивлялись на семинарах, чего это народ по-прежнему на Win32 сидит. Потом же, когда опомнились, времени что-то сильно улучшать уже не было - речь зашла чуть ли не о продаже всего подразделения, тут лишь бы на плаву удержаться. Видимо основная причина в этом.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34432255
vitalek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, попробовал запустить последний тест под Lazarus - так он вообще тихо завис(зациклился по ходу) Может я что делаю не так? Попробуйте, кто дружит с Лазарем/FPC - а то у меня эта самоделка только сплошное разочарование вызывает. Или просто руки кривые и бубен для священных танцев мне не подвластен
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34432377
Lexogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitalek grexhide vitalekДействительно, переписали... Писатели, блин:(

Расслабился, ей богу. Тебе сильно ведомы причины, почему они сделали именно так?
Не понял... Кто расслабился?
И каковы же, интересно, причины по которым они сделали так? Трудно было оставить как есть? Надо было шаловливыми ручонками там поковырять? Причина по ходу одна: в 8-й версии они вообще собрались Win32 похоронить и забросить развитие соответствующего компилятора. Вспомните, как они .NET пропихивали и удивлялись на семинарах, чего это народ по-прежнему на Win32 сидит. Потом же, когда опомнились, времени что-то сильно улучшать уже не было - речь зашла чуть ли не о продаже всего подразделения, тут лишь бы на плаву удержаться. Видимо основная причина в этом.

ИМХО. Delphi был сделан для быстрой разработки приложений, с этой задачей они справились. А вот если бы все пользователи Delphi на постсоветском пространстве купили лицензионную весию, то у борланда хватило бы средств на оптимизацию компилятора. :)
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34432395
vitalek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexogen vitalek grexhide vitalekДействительно, переписали... Писатели, блин:(

Расслабился, ей богу. Тебе сильно ведомы причины, почему они сделали именно так?
Не понял... Кто расслабился?
И каковы же, интересно, причины по которым они сделали так? Трудно было оставить как есть? Надо было шаловливыми ручонками там поковырять? Причина по ходу одна: в 8-й версии они вообще собрались Win32 похоронить и забросить развитие соответствующего компилятора. Вспомните, как они .NET пропихивали и удивлялись на семинарах, чего это народ по-прежнему на Win32 сидит. Потом же, когда опомнились, времени что-то сильно улучшать уже не было - речь зашла чуть ли не о продаже всего подразделения, тут лишь бы на плаву удержаться. Видимо основная причина в этом.

ИМХО. Delphi был сделан для быстрой разработки приложений, с этой задачей они справились. А вот если бы все пользователи Delphi на постсоветском пространстве купили лицензионную весию, то у борланда хватило бы средств на оптимизацию компилятора. :)

А как быть тем, у кого лицензия?
И потом, речь идёт не об отсутствии улучшений, а об ухудшении, а это ведь не одно и тоже:(
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34432613
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitalekА как быть тем, у кого лицензия?
И потом, речь идёт не об отсутствии улучшений, а об ухудшении, а это ведь не одно и тоже:(

Поверь, в среде разработки Delphi - масса других, более актуальных проблем (для пользователей систем в том числе), чем отдельно взятая оптимизация.

Если сильно интересно - зайди на qc.borland.com и посмотри на количество нерешённых вопросов.
Уверен, на 100%, что "финт с оптимизацией" сняли именно в очередной борьбе с каким то другим багом.

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

--

А по поводу лицензирования - да, все верно. Более чем уверен, 90% инсталляций Delphi и поныне - нелегальные, а из оставщихся 10% - 80% - куплены один раз в незапамятные времена, с тех пор с "чистой" совестью обновляемые за "спасибо" (даже учитывая резко упавшую цену на те же последние редакции Turbo).
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34432628
Константин Заровный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitalekКстати, попробовал запустить последний тест под Lazarus - так он вообще тихо завис(зациклился по ходу) Может я что делаю не так? Попробуйте, кто дружит с Лазарем/FPC - а то у меня эта самоделка только сплошное разочарование вызывает. Или просто руки кривые и бубен для священных танцев мне не подвластен

Скомпилил lzma на FreePascal, кое как запустил, но результаты почти в 2 раза медленнее, чем в Delphi7.
...
Рейтинг: 0 / 0
Бенчмарки C#, C++, Java, Delphi
    #34432631
Yuric74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vitalekКстати, попробовал запустить последний тест под Lazarus - так он вообще тихо завис(зациклился по ходу) Может я что делаю не так? Попробуйте, кто дружит с Лазарем/FPC - а то у меня эта самоделка только сплошное разочарование вызывает. Или просто руки кривые и бубен для священных танцев мне не подвластен
Попробовал, нашел причину зацикливания. В программе использован побочный эффект цикла for - переменная цикла после выхода из него имеет значение на 1 больше или меньше конечного значения (соответственно цикл to и downto). В Lazarus такое не прокатывает.
Измени первый цикл
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
      for m:=razmer downto  1  do
        begin
          if m= 1  then
            break;
          if b[m]>b[m- 1 ] then
            break;
        end;
...
Рейтинг: 0 / 0
25 сообщений из 265, страница 3 из 11
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Бенчмарки C#, C++, Java, Delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]