|
|
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
ещё хочуА не трудно будет запустить opt-алгоритм на с++/дельфи? Интересно во сколько раз эти языки быстрее справятся с задачей. Забеги новой реализации для razmer = 13. Код: 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. Исходники + бинарники: http://www.mycoolfotos.com/lzma/repeat_goto.zip (273 KB) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 23:33 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Master Alex http://www.mycoolfotos.com/lzma/repeat_goto.zip (273 KB) Прогнал на своей тачке Pentium 4 3ГГц (без Java): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Забавно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 10:46 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Opt версии надо сравнивать только между собой - там другие входные параметры -razmer = 13; У всех остальных razmer = 12; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 10:49 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Master AlexOpt версии надо сравнивать только между собой - там другие входные параметры -razmer = 13; У всех остальных razmer = 12; Пардон, не въехал сразу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2007, 10:55 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Там чтобы всё "по честному" было, вариант С# нужно переписать на указателях. Иначе рулит проверка выхода за границы массива, что является существенным тормозом. Как я показал ранее на примере с сортировкой, C# "на указателях" не сильно отстаёт от С++... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 11:15 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Попробуйте вот такой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 11:20 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Алексей КТам чтобы всё "по честному" было, вариант С# нужно переписать на указателях. Иначе рулит проверка выхода за границы массива, что является существенным тормозом. Как я показал ранее на примере с сортировкой, C# "на указателях" не сильно отстаёт от С++... Давайте уже что-то другое потестируем - эти перестановки притомили малехо :) Например, реализацию HashTable (HashMap) ! Предлагайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 12:28 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Master Alex Алексей КТам чтобы всё "по честному" было, вариант С# нужно переписать на указателях. Иначе рулит проверка выхода за границы массива, что является существенным тормозом. Как я показал ранее на примере с сортировкой, C# "на указателях" не сильно отстаёт от С++... Давайте уже что-то другое потестируем - эти перестановки притомили малехо :) Например, реализацию HashTable (HashMap) ! Предлагайте. Ага, как дошло до оптимизации C#, так сразу "давайте задачу сменим", типа надоела... :-))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 14:05 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Алексей К Master Alex Алексей КТам чтобы всё "по честному" было, вариант С# нужно переписать на указателях. Иначе рулит проверка выхода за границы массива, что является существенным тормозом. Как я показал ранее на примере с сортировкой, C# "на указателях" не сильно отстаёт от С++... Давайте уже что-то другое потестируем - эти перестановки притомили малехо :) Например, реализацию HashTable (HashMap) ! Предлагайте. Ага, как дошло до оптимизации C#, так сразу "давайте задачу сменим", типа надоела... :-))))))) Я вот не пойму: а какой тогда вообще смысл городить все эти managed code, кричать о супербезопасности, новых, доселе неведомых преимуществах, если потом приходится оптимизировать на указателях? Не программа, а мешанина какая-то получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 15:33 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
vitalekЯ вот не пойму: а какой тогда вообще смысл городить все эти managed code, кричать о супербезопасности, новых, доселе неведомых преимуществах, если потом приходится оптимизировать на указателях? Не программа, а мешанина какая-то получается. Ну почему же... Не во всех ведь задачах нужен минимум функциональности и безопасности и макимум производительности. Если скорость выполнения позволяет (типичный клиент к БД тому пример), то почему бы не использовать дополнительные контроли типов и границ массивов? В итоге код получается потенциально надёжнее. А если добавить, в данном случае, проверку выхода за границы массива в С++, уверен, скорость будет примерно одинаковая. Наоборот хорошо, что язык позволяет разработчику выбирать между safe и unsafe кодом в зависимости от решаемой задачи. ЗЫ: и за что все так ненавидят C#... :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 15:50 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Народ может кому интереснее тут сравнивать ? http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all&lang2=csharp http://dada.perl.it/shootout/craps.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 21:43 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
vitalek Я вот не пойму: а какой тогда вообще смысл городить все эти managed code, кричать о супербезопасности, новых, доселе неведомых преимуществах, если потом приходится оптимизировать на указателях? Не программа, а мешанина какая-то получается. иначе потенциальные потребители языка не будут платить деньги за сертификаты по очередной версии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2007, 22:29 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Алексей КТам чтобы всё "по честному" было, вариант С# нужно переписать на указателях. Переписать C# вариант на указателях - это примерно то же, что переписать например Delphi вариант на ассемблере. То есть "инородное содержание в формально той оболочке". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2007, 10:06 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
softwarer Алексей КТам чтобы всё "по честному" было, вариант С# нужно переписать на указателях. Переписать C# вариант на указателях - это примерно то же, что переписать например Delphi вариант на ассемблере. То есть "инородное содержание в формально той оболочке". Не то же самое. Assembler - это уже другой язык, а тут всё в рамках спецификации C#. Там в противном случае получается, что программа на C# делает больше чем программы на C++ и Delphi. Помимо мамого алгоритма происходит дополнительная проверка границ массивов. Нужно или добавить проверку границ в C++ и Delphi, или убрать её из C#. Иначе программы получаются разные и сравнивать скорость их работы глупо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2007, 13:37 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
"мамого" следует читать как "самого" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2007, 13:38 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Алексей К softwarer Алексей КТам чтобы всё "по честному" было, вариант С# нужно переписать на указателях. Переписать C# вариант на указателях - это примерно то же, что переписать например Delphi вариант на ассемблере. То есть "инородное содержание в формально той оболочке". Не то же самое. Assembler - это уже другой язык, а тут всё в рамках спецификации C#. Хм. А с каких пор ассемблерные вставки покинули спецификацию дельфи? Один в один. Алексей КТам в противном случае получается, что программа на C# делает больше чем программы на C++ и Delphi. Ну так это и является целью проверки. Грубо говоря, есть два типа проверок. Один тип - это состязание программистов в крутоте. Язык тут большого значения не имеет, вопрос именно в умениях, знании тонкостей, алгоритмов итп. Другой тип - это сравнение инструментов, и тут сравниваются.... типичные особенности, а не умение выжать максимум. Скажем, для примера - я могу знать, что в таком-то компиляторе цикл while реализован куда лучше цикла repeat, и таким образом ускорить программу с repeat. Это будет плюс мне как программисту - но согласись, не будет плюсом инструменту. Указатели в C#, как ни крути, это "заштатный" инструмент - призванный примирить потребности с возможностями. И как сам знаешь, окруженный кучами оговорок "не надо", "в крайнем случае" итп - в точности как ассемблерные вставки. Алексей КНужно или добавить проверку границ в C++ и Delphi, или убрать её из C#. Иначе программы получаются разные и сравнивать скорость их работы глупо. Не забудь один момент - в дельфе я могу включить или отключить проверку границ, не трогая программного кода. То есть держать проверку границ в debug и отключать в release. Согласись, это не то же самое, что "для release переписать на указатели". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2007, 17:00 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
softwarerХм. А с каких пор ассемблерные вставки покинули спецификацию дельфи? Один в один.Чё-то я уже сам засомневался... :-)) softwarerНу так это и является целью проверки. Грубо говоря, есть два типа проверок. Один тип - это состязание программистов в крутоте. Язык тут большого значения не имеет, вопрос именно в умениях, знании тонкостей, алгоритмов итп. Другой тип - это сравнение инструментов, и тут сравниваются.... типичные особенности, а не умение выжать максимум. Скажем, для примера - я могу знать, что в таком-то компиляторе цикл while реализован куда лучше цикла repeat, и таким образом ускорить программу с repeat. Это будет плюс мне как программисту - но согласись, не будет плюсом инструменту.Безусловно. Всё зависит от цели, преследуемой "забегами". Но раз уж тут привели пример "изврата" с goto на делфи, мне показалось, что для полноты картины не хватает "изврата" на С# с указателями. А дальше каждый сам для себя сделает выводы о целесообразности выбора того или иного языка и подхода при решении той или иной задачи. softwarerУказатели в C#, как ни крути, это "заштатный" инструмент - призванный примирить потребности с возможностями. И как сам знаешь, окруженный кучами оговорок "не надо", "в крайнем случае" итп - в точности как ассемблерные вставки.Даже галочку специальную в свойствах C#-проекта сделали, включающую unsafe... :-)) softwarerНе забудь один момент - в дельфе я могу включить или отключить проверку границ, не трогая программного кода. То есть держать проверку границ в debug и отключать в release. Согласись, это не то же самое, что "для release переписать на указатели".За это делфи большой плюс. Жаль что такого нет в C#. Он там пытается сам временами при оптимизации отключать эту проверку, но естественно не всегда у него это получится и галочка не помешала бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2007, 17:44 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Алексей КЖаль что такого нет в C#. Я бы сказал, это противоречит идеологии managed кода. Отключать ее можно только в тех случаях, когда соответствующая проверка выполнима на этапе компиляции (точнее даже, не компиляции, а загрузки сборки - иначе я подправлю пару байт в сборке и таки подсуну хакерское приложение со всеми положенными атрибутами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2007, 19:05 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
softwarerЯ бы сказал, это противоречит идеологии managed кода.С другой стороны, если нам очень важна производительность и по каким-то причинам указанной сборке мы полностью доверяем, то почему бы эту проверку не отключить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2007, 07:30 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Алексей К, не, то, что с# тестили с баундчеком – это совершенно правильно (в джаве это вроде не отключается?..), но изврата ради конечно можешь написать в ансейфе, скомпилить, выложить, ты тут самый большой любитель этого дела :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 13:36 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Оптимизировал немного :) Athlon X2 3800+ (2ГГц) Delphi 2007 razmer=13 Time: 13796(ms) Код Код: 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. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 22:21 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
А если учесть, что при лексикографической перестановке вторая половина вариантов - это зеркальное отражение первой половины, то заменив Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext Код: plaintext Time: 7375(ms) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 22:44 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Забыл написать, что при такой замене razmer не должен превышать 15. Если надо больше, но до 255 (перестановок на много лет работы:)), то Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 23:03 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
Yuric74 Код: plaintext Код: plaintext В таком случае алгоритм будет только СЧИТАТЬ, но не предоставлять готовые перестановки. Тогда уж можно сделать оптимизацию сводимую к вычислению факториала от количества элементов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 11:34 |
|
||
|
Бенчмарки C#, C++, Java, Delphi
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsВ таком случае алгоритм будет только СЧИТАТЬ, но не предоставлять готовые перестановки. ДА??? Я же написал про зеркальное отражение. после каждой перестановки получаем два варианта - с 1 по razmer и с razmer до 1. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2007, 11:41 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34497123&tid=1342778]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 472ms |

| 0 / 0 |
