|
|
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
Очень много дискуссий о том, какой язык лучше. Но все же советую всем, кто хочет разобраться, какой компилятор лучше Delphi или C++: быстрее компилирует и лучше оптимизирует код, сделать это СОБСТВЕННОРУЧНО и не верить никаким тестам. Большинство тестов - это просто реклама фанатов того или иного языка. Во многом в тестах используются специализированные функции конкретной среды, а этого для объективной оценки нужно избегать. Во-первых, наиболее объективный ответ могут дать люди, которые в одинаковой степени хорошо знают языки и не имеет значения на каком из них писать. Я всю жизнь думал, что если писать графический движок или ядро некоторого сложного программного проекта, то его обязательно нужно писать на С++ (собственно так я и делал). Мол все вокруг говорят, что С++ лучше предназначен для этих целей, все операционные системы и драйвера на нем пишут и т.д. Но никто ни разу не говорил о том, что язык С++ для этого используется в силу его кроссплатформенности и исторически сложившихся предпочтений. К сожалению Delphi начинает сей путь только сейчас путем покорения Linux, MacOS своим открытым проектом Lazarus. Во-вторых, сравнивать нужно не языки, а компиляторы! Язык – это лишь средство представления алгоритма, и тут уже предпочтение отдается «на цвет и вкус». И в третьих, никакие интерпретируемые языки никогда не сравняться по скорости с компилируемыми (это я думаю очевидно). Хотя интерпретируемые и обладают рядом непревзойденных преимуществ над компилируемыми, но это отдельная история… Итак, начнем тест. Было взято две среды: С++ – Microsoft Visual Studio 2008 Professional Edition и Embarcadero Delphi XE. На этих языках написано две одинаковые DLL библиотеки: LibC++.dll и LibDelphi.dll. Компиляция всех проектов проводилась Release с максимальной степенью оптимизации. Расчет выполнен простой: в массиве ищем максимальное и минимальное значение, потом нормируем весь вектор и вычисляем от него сумму синусов. Это наиболее характерные задачи компьютерной графики – расчетные математические. Текст DLL библиотеки на Delphi. Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: 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. Результаты такие: LibDelphi.dll – размер 81,5 Кб; LibC++.dll – размер 61,0 Кб. При больших объемах кода эта разница в процентном отношении может быть меньше. Вывод консоли: Код: plaintext 1. 2. 3. 4. 5. Если честно, не понимаю почему такой результат, я ожидал увидеть совсем обратное. Разница: функция Delphi в 2 раза быстрее аналогичной на С++! Оптимизация на максимуме в обоих проектах. Буду благодарен, если найдете ошибку в моих рассуждениях, потому что истина дороже. Таким образом, мы протестировали простые две математические функции и увидели большую разницу (хотя в правдоподобности я сомневаюсь, сильно уж большая разница). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2011, 21:02 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
ИМХО, в подавляющем большинстве случаев скорость компиляции - один из последних факторов при современных мощах писюков. Взять например скриптовые языки, и наверное, самый тормознутый из них - руби: хотя скорость исполнения кода на нем может быть на 2-3! порядка ниже откомпилированного кода С или Паскаля, это не сводит его поклонников к нулю (точнее, не этот фактор, т.к. руби всеже просел по популярности). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2011, 21:27 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
Господа, вы о скорости компиляции или о скорости выполнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2011, 21:35 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
Edd.DragonГоспода, вы о скорости компиляции или о скорости выполнения? Конечно речь сейчас идет о времени выполнения функции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2011, 23:01 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
VanoPro, Ну просто и в твоем сообщении и у arni встречается упоминание времени компиляции, но не ясно, к чему. ---- Если фраза "максимальные оптимизации" по поводу Дельфи в принципе не очень расплывчата, то на счет c++ хотелось бы увидеть параметры компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2011, 23:13 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
Исходники можете скачать. Пути настроены относительные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 00:09 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
VanoPro, Ну вот решил я твои тексты под VC 2005 vs Delphi7 прогнать. Сходу как у тебя дельфя не смогла найти точку входа в процедуру сишной библиотеки, потому я сделал cdecl и убрал stdcall: Код: 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. Ну и в дельфе соответственно. Завелось. Но результат вышел еще печальнее: Код: plaintext 1. 2. 3. 4. 5. Ок. А давай проверим, не выходя из VC и не делая никаких dll-ек. Код: 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. Все нормально? Вроде да. Рендомы от 0 до 1. Ну код переформатировал и поменял константы. Результат: 600 ms Давай тоже самое сделаем и с дельфи, т.е. дельфийную функциию вкомпилим в exe. Ничего не изменилось: 780 ms . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 00:22 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
А, еще: d7lib.dll - 41 472 байта vclib.dll - 6 656 байт всего )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 00:23 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
Тоже попробовал наоборот в С++ использовать Delphi, в Delphi - C++, просто без библиотек с одними только ехе-шниками. Вердикт: код на С++ на 16,4 % работает быстрее, чем на Delphi . Замечание: вся проблема с таким замедлением была видимо в вызову функции (хотя не понятно почему) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 00:45 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
зато код на дэлфи быстрее компилируется, в разы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 01:17 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNзато код на дэлфи быстрее компилируется, в разы. Согласен, особенно когда кода много, а ты начинаешь править и менять при этом компилировать и запускать, то в С++ намного больше для этого требуется времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 01:23 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
VanoPro, Когда кода очень много, то обычно не принято его в один объектный файл компилировать. В итоге перекомпилируешь только то, что правишь. Ну и в с++ ты пользуешься сложными типами данных, которые реализованы шаблонами. В Дельфи же никаких шаблонов. В итоге конечно же компилятору с++ приходится много "думать", т.к. за простыми, казалось бы, строками могут скрывать весьма зубодробительные конструкции и взаимосязи. Плохо это или хорошо? Кому писать простенькие программки, тому наверняка плохо. Особенно пытаться понять что-то в монструозных сообщениях об ошибке, когда в них вываливаются километровые определения многоэтажного шаблонного типа )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 01:46 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
Edd.DragonНу и в с++ ты пользуешься сложными типами данных, которые реализованы шаблонами. В Дельфи же никаких шаблонов. В итоге конечно же компилятору с++ приходится много "думать", т.к. за простыми, казалось бы, строками могут скрывать весьма зубодробительные конструкции и взаимосязи. Плохо это или хорошо? Кому писать простенькие программки, тому наверняка плохо. Особенно пытаться понять что-то в монструозных сообщениях об ошибке, когда в них вываливаются километровые определения многоэтажного шаблонного типа )) Согласен и с этим. Вобщем основная задача этой темы была определить лучший компилятор по скорости выполняемого кода. Эта задача была успешно выполнена в пользу С++. А дальше копать не будем. Все равно эти "священные" войны бесконечны. Есть поклонники и того языка и другого. Пусть каждый пишет на своем в удовольствие и без ошибок :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 01:52 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
Edd.DragonVanoPro, Ну и в с++ ты пользуешься сложными типами данных, которые реализованы шаблонами. ты отстал от жизни )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 01:57 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNEdd.DragonVanoPro, Ну и в с++ ты пользуешься сложными типами данных, которые реализованы шаблонами. ты отстал от жизни )) http://sjrd.developpez.com/delphi/tutoriel/generics/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 02:05 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN, Я про них и забыл Таки да, и тут прикрутили ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 04:31 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
может быть дело в разных менеджерах памяти? как насчет измерить время уже в функции(я про си)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 07:06 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
DLL загрузить нужно сначала, потом измерениями заниматься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 11:00 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
автор, зырьте как компиляторы сравнивают и заканчивайте заниматься изобретением лисапета :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 12:05 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
из этого видно, что в целом компиляторы борланда сосут :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 12:06 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
Александр2из этого видно, что в целом компиляторы борланда сосут :)Табличка означает, что на этапе компиляции, например выражение а+а+а+а заменяется на а*4? Дааа, это крутая оптимизация, наверное в каждой программе по много таких выражений ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 12:58 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
для изобретателей лисапета, глде версии компиляторов на рисунке? компилятор с++ будет медленне компилятора делфи за счет того, что он двухпроходный (wo-pass compiler). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 13:47 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
alneoдля изобретателей лисапета, глде версии компиляторов на рисунке? компилятор с++ будет медленне компилятора делфи за счет того, что он двухпроходный (wo-pass compiler). скорость компиляции слабо интересует, интересует скорость выполнения того, что накомпилировали насчет версий - это срез на 2010 год ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 14:16 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
когда-то давно сравнивал скорости сишных компиляторов под винду, на первых местах был интел и ватком, борландовский был самый медленный. но это были синтетеические тесты. на скорости работы приложений(клиент-серверные) это никак не сказывалось :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 14:20 |
|
||
|
Delphi быстрее С++?
|
|||
|---|---|---|---|
|
#18+
alneoкогда-то давно сравнивал скорости сишных компиляторов под винду, на первых местах был интел и ватком, борландовский был самый медленный. но это были синтетеические тесты. на скорости работы приложений(клиент-серверные) это никак не сказывалось :-) смотря как мерять если на глазок, то наверное, не сказывается а если счет идет на миллисекунды, то очень сильно сказывается :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2011, 14:30 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37405431&tid=1342010]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
191ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
87ms |
get tp. blocked users: |
2ms |
| others: | 277ms |
| total: | 595ms |

| 0 / 0 |
