Управляемый код быстрее?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Управляемый код быстрее?

Сообщение FaKk2 » 05.05.2009 (Вт) 19:09

Яростные противники управляемого кода брызжут слюной крича о том что .NET по определению медленнее нативного кода.

Вот вам статья, где автор взял реализацию алгоритма по преобразованию Фурье и сделал сравнение в неуправляемом C++, Managed C++, C++/CLI и наконец C#.

Управляемый код оказался быстрее неоптимизированного C++ (во всех случаях) и в среднем такого же быстрого как оптимизированного по скорости C++.

Коронная фраза: There is nothing in .NET that means that it should automatically be much slower than native code, indeed, as these results have shown there are cases when managed code is quicker than unmanaged code. Anyone who tells you that .NET should be slower has not thought through the issues.

Вольный перевод: В .NET нет ничего что делало бы код медленнее чем нативный, и этот тест показал случаи где управляемый код даже быстрее чем неуправляемый. Любой кто говорит вам что .NET должен быть всегда медленнее, тот крикливый дурак [ :mrgreen: ]
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Управляемый код быстрее?

Сообщение ANDLL » 05.05.2009 (Вт) 19:27

Это очевидно.
Любой код состоящий из простого набора инструкций процессора, на любом компилируемом языке работает примерно за одинаковое время
Управляемый код медленен в других местах.
Сборка мусора в .NET медленее чем в обычной куче - в отличие от обычной кучи, требуется некотрое время что бы определить, какие блоки свободны, а какие - нет.
Также есть проблема связанная с моментом, когда сборка мусора вызывается. В .NET(в java, в перле) есть только одна куча, и принципиально невозможно внести в язык еще одну кучу.
В отличие от того же с++, в котром всегда можно создать сколько угодно хипов, и руками выбирать, в каком из них выделять память.
Таким образом в "управляемом" языке, невозможно написать критичный по скорости код, потому что, сколь мало бы мы не использовали кучу ,все равно рано или поздно код может "вдруг" остановится на неопределенное время для запуска сборки мусора.
В том же с++ мы во первых всегда знаем, в какие моменты может начаться сборка мусора. Во вторых, мы всегда можем ее избежать в некоторых места, правильно спроектировав программу
P.S. Написаное разумеется относится к людям, которые понимают, как работает memory heap, и почему "сборка мусора" к нему то же применима. Убедительная просьба не писать несуразности вроде "в языке с ручным управлением памятью нет сборки мусора"
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Управляемый код быстрее?

Сообщение Хакер » 05.05.2009 (Вт) 19:55

Fakk2, ты как человек, читавший статью, расскажи мне, крикливому дураку, как это возможно, если Native-код выполняется процессором, а MSIL-код выполняется Native-кодом?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Управляемый код быстрее?

Сообщение jangle » 05.05.2009 (Вт) 19:57

Уже было нечто подобное, статья, что Java байт-код работает быстрее нативного C++. В свое время, статья вызвала изрядное бурление говн на программистких форумах.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Управляемый код быстрее?

Сообщение ANDLL » 05.05.2009 (Вт) 20:08

Хакер, для тебя одного новость, что ни java ни .net никем не интерпретируются, а компилируются в машинный код? Так с чего он сам должен быть медленее?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Управляемый код быстрее?

Сообщение jangle » 05.05.2009 (Вт) 20:13

ANDLL писал(а):Хакер, для тебя одного новость, что ни java ни .net никем не интерпретируются, а компилируются в машинный код? Так с чего он сам должен быть медленее?


Java не компилируется, даже в принципе такой возможности нет. Там обычная стековая машина, в качестве интерпретатора, практически чистый ФОРТ

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Управляемый код быстрее?

Сообщение FaKk2 » 05.05.2009 (Вт) 20:19

Все отписавшиеся are missing the point. Меня мучал вопрос, правда ли то что разделение компиляции во времени хуже чем обычная компиляция?

Ответ, нет не хуже а даже лучше. Довесок в виде сборщика мусора не учитывается, т.к. это не относится к компиляции.

И да, Хакер, где это MSIL интерпретируется нативным кодом? По сути .NET делит компиляцию на две части, и интерпретации нет нигде.
Последний раз редактировалось FaKk2 05.05.2009 (Вт) 20:19, всего редактировалось 1 раз.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Управляемый код быстрее?

Сообщение RayShade » 05.05.2009 (Вт) 20:19

Java компилируется :) В код, который потом исполняется JVM.
I don't understand. Sorry.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Управляемый код быстрее?

Сообщение FaKk2 » 05.05.2009 (Вт) 20:21

RayShade писал(а):Java компилируется :) В код, который потом исполняется JVM.


Нет, Рей, Java компилируется в байт-код, который интерпретируется JVM. См. http://www.med.harvard.edu/JPNM/Java/Ja ... reted.html
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Управляемый код быстрее?

Сообщение RayShade » 05.05.2009 (Вт) 20:22

Не занимайся софистикой :)
I don't understand. Sorry.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Управляемый код быстрее?

Сообщение FaKk2 » 05.05.2009 (Вт) 20:25

RayShade писал(а):Не занимайся софистикой :)


Пацаны то не знают, что софистика вредна и трендят, что "усё оно виртуально и поэтому тормозит" :)

Кстати, на диаграме от Sun, явно проглядывает слово "interpreter" :))
Последний раз редактировалось FaKk2 05.05.2009 (Вт) 20:26, всего редактировалось 1 раз.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Управляемый код быстрее?

Сообщение ANDLL » 05.05.2009 (Вт) 20:25

Гм, думлал в java то же есть jit
Жаль, но в любом случае - .net точно не интерпретируется
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Управляемый код быстрее?

Сообщение jangle » 05.05.2009 (Вт) 20:30

Если .NET компилируется в машинный код, почему .NET программы такие медленные?

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Управляемый код быстрее?

Сообщение FaKk2 » 05.05.2009 (Вт) 20:31

jangle писал(а):Если .NET компилируется в машинный код, почему .NET программы такие медленные?


Кхм, а вот сабжевая статья убедительно демострирует, что сама технология непричем...
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Управляемый код быстрее?

Сообщение ANDLL » 05.05.2009 (Вт) 20:37

jangle писал(а):Если .NET компилируется в машинный код, почему .NET программы такие медленные?
"если"? Ты не уверен?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Управляемый код быстрее?

Сообщение ANDLL » 05.05.2009 (Вт) 20:39

FaKk2 писал(а):Все отписавшиеся are missing the point. Меня мучал вопрос, правда ли то что разделение компиляции во времени хуже чем обычная компиляция
Видимо это ты(как и авторы статьи) missing the point. Само по себе разделение не может уменьшать время работы итогового кода.
Проблемы с производительностью в .net совсем из другой области, и авторы статьи, случайно ли, намеренно ли, показали просто узкую "вырезку", в которой эти проблемы не видны. И начали кричать что ухты ахты, код работает так же быстро, а вы все не правы
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Управляемый код быстрее?

Сообщение FaKk2 » 05.05.2009 (Вт) 20:48

ANDLL писал(а):
FaKk2 писал(а):Все отписавшиеся are missing the point. Меня мучал вопрос, правда ли то что разделение компиляции во времени хуже чем обычная компиляция
Видимо это ты(как и авторы статьи) missing the point. Само по себе разделение не может уменьшать время работы итогового кода.
Проблемы с производительностью в .net совсем из другой области, и авторы статьи, случайно ли, намеренно ли, показали просто узкую "вырезку", в которой эти проблемы не видны. И начали кричать что ухты ахты, код работает так же быстро, а вы все не правы


Да, но аргумент противников говорит, что .NET всегда медленнее. Это мягко говоря чушь. Некоторая потеря производительности в совершенно некритичных случаях (а таких большинство) является разумной платой за удобство пользованием. Я считаю, что .NET предотвратил больше ошибок в коде, чем потратил процессорного времени на JIT-комплиляцию и сборку мусора.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Управляемый код быстрее?

Сообщение ANDLL » 05.05.2009 (Вт) 21:01

.NET всегда медленнее. Это мягко говоря чушь.
Это несомненно
и сборку мусора.
А это уже зависит от специфики приложения
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Управляемый код быстрее?

Сообщение Хакер » 05.05.2009 (Вт) 21:27

Нет. У меня была мысль сделать в посте пометку о том, что я имею в виду, в общем-то.

Так вот. Разве такое положение дел был изначальным?
А так, никто (в том числе я) никогда не говорил, что MSIL, перекомплированный в Native-код, по определению медленнее Native-кода. По определению медленнен исполняемый Native-кодом MSIL-код.

<тут страничный был текст, но так его нахождение может вызвать холивар, текст был удалён>
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Управляемый код быстрее?

Сообщение Хакер » 05.05.2009 (Вт) 21:32

Блин. Пока писал <страничный текст> холивар уже начали.

Некоторая потеря производительности в совершенно некритичных случаях (а таких большинство) является разумной платой за удобство пользованием.

А в чём оно? Оно ограничивается кроссплатформенностью?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Управляемый код быстрее?

Сообщение Mikle » 06.05.2009 (Ср) 10:51

Управляемый код медленнее при загрузке программы - это естественно, нативный испольняется сразу, а управляемый нужно еще скомпилить.
Управляемый код, как правило, несколько медленнее при выполнении потому, что он компилится перед выполнением и НЕ МОЖЕТ СЕБЕ ПОЗВОЛИТЬ компилиться столько время, сколько C++ программы.

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Управляемый код быстрее?

Сообщение FaKk2 » 06.05.2009 (Ср) 19:25

Mikle писал(а):Управляемый код медленнее при загрузке программы - это естественно, нативный испольняется сразу, а управляемый нужно еще скомпилить.
Управляемый код, как правило, несколько медленнее при выполнении потому, что он компилится перед выполнением и НЕ МОЖЕТ СЕБЕ ПОЗВОЛИТЬ компилиться столько время, сколько C++ программы.


Мне не совсем понятна твоя логика. Положим управляемый код медленнее при загрузке программы, потому что её надо скомпилировать. Почему же он медленнее при выполнении, ведь он уже скомпилирован? Более того, сабжевая статья наглядно это показывает. Скомпилированный управляемый код как минимум не такой же, а иногда даже быстрее неуправляемого.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Управляемый код быстрее?

Сообщение Mikle » 07.05.2009 (Чт) 9:58

FaKk2 писал(а):Почему же он медленнее при выполнении, ведь он уже скомпилирован

Я уже написал:
Mikle писал(а):НЕ МОЖЕТ СЕБЕ ПОЗВОЛИТЬ компилиться столько время, сколько C++ программы

То есть не может позволить себе такую глубокую оптимизацию. Кого устроит, если программа каждый раз будет 10 минут стартовать?

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Управляемый код быстрее?

Сообщение Williams » 07.05.2009 (Чт) 11:38

NGEN как раз убирает задержку при первом старте
И вы думаете, что вас оставят в живых после прочтения этого поста?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Управляемый код быстрее?

Сообщение Nord777 » 07.05.2009 (Чт) 14:18

Mikle А ты владеешь сведениями о времени компиляции программ на c++ и VB.Net ?
При фразе "глубокую оптимизацию" я представляю, что с++ компилится раз 10 дольше. :D
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Управляемый код быстрее?

Сообщение Mikle » 07.05.2009 (Чт) 14:50

Nord777 писал(а):А ты владеешь сведениями о времени компиляции программ на c++ и VB.Net ?

Замеров не производил, просто "ощущение", плюс вечные жалобы плюсовиков в интернете на "запустил перекомпиляцию и пошел пить кофе".

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Управляемый код быстрее?

Сообщение Nord777 » 07.05.2009 (Чт) 15:02

Замеров не производил, просто "ощущение",
Вот так и зарождаются священные войны :D
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Управляемый код быстрее?

Сообщение Mikle » 07.05.2009 (Чт) 15:33

Я не прав, что C++ медленно компилит???

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Управляемый код быстрее?

Сообщение iGrok » 07.05.2009 (Чт) 16:10

Mikle писал(а):Я не прав, что C++ медленно компилит???

Компилит он быстро. Но оооочень долго. :)
label:
cli
jmp label

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Управляемый код быстрее?

Сообщение jangle » 07.05.2009 (Чт) 16:25

Mikle писал(а):Я не прав, что C++ медленно компилит???


Зависит от размера проекта, очень большие, например игры, могут билдится всю ночь.

След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

    TopList