![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте |
И что с того? На шарпе в релизе этот тест на моём компе показал 223 миллисекунды, а на плюсах - 7,5 ... СЕКУНД (примерно в 35 раз медленнее). В конечном итоге какая разница что и как реализовано? Если ты пишешь на языке, то используешь те возможности, которые он предоставляет. Тебе нужны вычисления? Пожалуйста - дотнет выполняет их довольно быстро. В каких-то других ситуациях может и тормозит, но зато там масса других вкусностей присутствует, а даром ничего не даётся - за удобство разработки чем-то жертвовать приходится. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
LamerTM |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 |
Когда нужны функции библиотек языка - это одно. Когда нужен быстрый язык для реализации своих функций - это другое. Я не использую синусы. Я использую только примитивные операции (+-*/) с типами int и double, максимум Round, Trunc и Power. Купил сегодня Borland Developer Studio 2006. За 200 рублей. Надеюсь оно того стоит. ![]() Цикл на C# [ for(i=0;i<1000000000;i++) k=k+1; ] компилится в это: inc dword ptr [ebp-0x18] inc dword ptr [ebp-0x14] cmp [ebp-0x14],0x3b9aca00 jl 0x..... Цикл на Delphi7 [for i := 0 to 1000000000 do k := k + 1;] компилится в это: inc ebx dec eax jnz $-04 (Аж слезы навернулись ![]() Цикл на Delphi 2006 : inc ebx dec eax jnz $-04 (то же что Delphi7 ![]() ![]() C++Builder (BDS2006) inc dword ptr [ebp-$38] inc dword ptr [ebp-$34] cmp [ebp-$34],$3b9aca00 jl $00401bf9 ![]() Все это как бы неиллюзорно намекает, что Delphi рвет всех на части. По крайней мере на этом простом цикле. При этом C++Builder каким-то чудесным образом генерит код аналогичный C#, как по самому коду, так и по тормознутости. 200 рублей на ветер. Ну хоть делфю апргейднул, а то была Delphi7. Цикл и инкремент это еще не все операторы, однако тендеция налицо. Что-то похоже моя идея найти более крутой язык слегка обламывается. |
|||
|
||||
wester |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 27.2.2009 |
LamerTM,
ну и на чем остановились ?)) PS по одному циклу полагать что он обходит C++ с дотнетом как минимум странно а вообще пишите на асме если так важна скорость , я думаю он удовлетворит ваши потребности |
|||
|
||||
LamerTM |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 |
Я и другие операторы посмотрю. Всякое может быть конечно. Но по-моему и так все ясно. Лет 5 назад написал процедуру на асме, чтобы заменить делфийскую для повышения скорости. Скорость не повысилась (в пределах погрешности измерений). Посмотрел код, компилируемый делфи. И проникся, так сказать, глубоким уважением к этому компилятору. Так что писать на асме, имея делфи, совсем не обязательно. Серьезной разницы не получится. В разы - точно. По крайней мере тогда я пришел именно к этом выводу. Тогда тестировался не один цикл, а довольно большая процедура, где было много всего разного. На чем остановился... да вот на том что надо будет думать как жить дальше на делфи, как обходить эти извраты что понаставили его создатели. Не эти бы ограничения, была бы конфетка. |
|||
|
||||
diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте |
LamerTM, а почему бы тебе не попробовать выполнить тест на каких-нибудь реальных вычислениях. Мне показалось, что я достаточно наглядно продемонстрировал, что тесты на липовом коде - не показатель.
Вот пример, добавь в приведённую программу ещё один тест
На моём компе плюсы показывают 1,168 секунд, а шарп - 1,068. Не 35 раз, конечно, но всё же. Кстати в дебаге шарп тормозит, а плюсы показывают одинаковые результаты. На дельфях проверить не могу. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||
|
|||||
diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте |
В последнем примере ошибку нашёл
Это чтобы на ноль не делить, работает быстрее, но шарп всё равно даёт немного лучшие результаты. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||
|
|||||
LamerTM |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 |
diadiavova,
О, это уже интереснее. C# порвал делфю! Код делфи:
На C#:
Резалты: делфи: 1608 мс (запуск экзешника такой же) С#: в дебагере 1.75, запуск екзешника - 1.14 Да, ты прав, тут надо целое исследование проводить. |
||||
|
|||||
wester |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 27.2.2009 |
LamerTM,
да зачем исследование , просто есть JIT компиляция и непосредственная компиляция на платформу типа C++ и дельфи |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте |
Экзешник надо именно из папки Release запускать.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
LamerTM |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 |
Папка Release это где? Я вот тут подумал, что код не эквивалентен. В С# перебирается Double, а на Delphi - Integer. Double там нельзя. Из-за чего там еще одна переменная получается. Но все равно C# рвет старую делфи. А с D2006 вровень. (у меня C# из BDS2006, если что)
Резалты: Delphi 7 - 1563 ms D2006 - 1000 ms C# - 1.031 s |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант |
||||
|
||||
LamerTM |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 11.3.2006 |
Код генерится один и тот же. Да и как там из тех трех асмовских команд можно сделать лучше, мне, например, не понятно. |
||||
|
|||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте |
В BDS - не знаю. В VS создаётся два варианта ехешника: один для отладки, другой - как есть, первый запускается не сам по себе, а под контролем дедаггера, естественно на этом производительность падает дальше некуда.
Код можно изменить, например цикл while или что там в дельфях, это вообще не принципиально, я этот код от фонаря написал, первое, что в голову пришло, а чтобы делать выводы надо много тестов провести. Добавлено через 43 секунды Думаю - без разницы. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
neweraser |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 17.2.2008 |
![]() ![]() ![]() -------------------- Кто ищет, тот всегда найдет. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re |
господа, вы кажется не учитываете то, что программа на C# - управляемая, тоесть, там весь код - ненативный, и этот код работает быстрее того, что создает компилятор delphi, что говорит о том, что компилятор delphi - очень плохо оптимизирует код
а BDS2006 видимо уже тоже создает .NET приложение, поэтому результат так похож на C# Добавлено через 1 минуту и 32 секунды это какбэ намекает нам на то, что Delphi, это lol ![]() Это сообщение отредактировал(а) Lazin - 3.8.2009, 15:27 |
|||
|
||||
![]() ![]() ![]() |
Правила раздела «Флейм» | |
|
Добро пожаловать в «Флейм». В разделе не действуют многие правила:
Строго запрещено:
Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт. Глас Винграда:
Глас Философии:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Флейм | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |