|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Немного посидев за симметричными микробенчмарками на Java и .Net, пришел к выводу, что .Net тормознее Java на вычислительных задачах процентов на 30% примерно. Ну то есть берем один и тот же алгоритм, пишем равнозначный эффективный код на обеих платформах (с учетом специфики, разумеется). Потом профилируем по отдельности, что бы убедиться, что нету никаких косяков с точки зрения перформанса. А потом сравниваем полученные цифры, и видим, что .Net стабильно прямо ощутимо тормознее Java. Я не смог найти в интернете исследований на эту тему. Разве что, у разных уважаемых людей из мира перфоманса, постоянно между строк сквозит, что в .Net очень простенький и слабенький JIT. В принципе, других причин для тормозов я и не вижу, кроме него: не могут в Microsoft написать такой же умный компилятор, как в Oracle. Кто-нибудь может поделиться сслыками с научными изысканиями на эту тему, или с глубоким анализом и/или сравнением компиляторов в Java и .Net? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:00 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
cdtyjv, равнозначный код покажешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:02 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
На некоторых вычислениях VB.NET проигрывает C# при компиляции в Release. C# выигрывает в скорости, может Вы используете VB.NET? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:22 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
http://habrahabr.ru/post/120090/ ну и в Wiki в разделе references есть ссылки на сравнение производительности ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:32 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Arm79 http://habrahabr.ru/post/120090/ ну и в Wiki в разделе references есть ссылки на сравнение производительностиГовно. Можно даже не смотреть. Когда человек в качестве бенчмарка выдает вот такое: Код: c# 1. 2. 3. 4. 5. 6.
... то сразу же становится понятно, что он не знает ровным счетом ничего о том, как надо проводить микро-бенчмарки. Отбрасываем, нужны еще ссылки. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:36 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
cdtyjvArm79 http://habrahabr.ru/post/120090/ ну и в Wiki в разделе references есть ссылки на сравнение производительностиГовно. Можно даже не смотреть. Когда человек в качестве бенчмарка выдает вот такое: Код: c# 1. 2. 3. 4. 5. 6.
... то сразу же становится понятно, что он не знает ровным счетом ничего о том, как надо проводить микро-бенчмарки. Отбрасываем, нужны еще ссылки. Во-первых, в Wiki ссылки не смотрели? Там не один тест во-вторых, указанный код автор позиционирует как скорость выдачи псевдослучайных значений, оговариваясь именно скоростью, а не качеством данных или еще чем. Там что, хоть и не очень важный параметр, но как второстепенный критерий вполне пойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:40 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Свеном, а тебе зачем? Делом займись, а не научными изысканиями своей тяги к "пиписькомерству". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:41 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Arm79во-вторых, указанный код автор позиционирует как скорость выдачи псевдослучайных значений, оговариваясь именно скоростью, а не качеством данных или еще чем. Там что, хоть и не очень важный параметр, но как второстепенный критерий вполне пойдет.Вы не поняли. Проблема не в том, что у него что-то не то сравнивается. Проблема в том, что он неправильно пишет бенчмарки. Когда вы присваиваете результат чего-либо локальной переменной, которая потом нигде не используется, компилятор может вообще выпилить этот код вместе с циклом, если докажет, что данный код не имеет сторонних эффектов, оставив вас с чем-то вроде: Код: c# 1. 2.
Поэтому написание микрбенчмарков - это не для студентов и джуниоров вроде этого парня. Этим занимаются опытные люди. Почитайте Алексея Шипилева на досуге, который занимается разработкой фреймворка для микробенчмарков для Java. Там надо как минимум понимать кишки компилятора, возиться с ассемблерным кодом, и прочий треш. А вы мне статью какого-то студента подсовываете. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:57 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Свеном, опять вам все не так. В Wiki тоже все плохо? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 10:58 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Arm79Свеном, опять вам все не так. В Wiki тоже все плохо?Комплексного анализа там нигде нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:06 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Если речь идет о комплексном, то навряд ли где-нибудь он есть, кроме как ".Net и Java имеют схожую производительность". Я думаю, не ошибусь, хоть и не эксперт по Java, что на exadata скорость у Java будет прекрасной. Но у обычных программистов нет доступа к таким дорогим игрушкам. На общем уровне, если это не онлайн-трейдинг, имхо разницы особой нет. А где нужна реальная скорость работы кода (а не его разработки) уместнее голый С. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:11 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
cdtyjvКомплексного анализа там нигде нет. а он кому-либо нужен? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 11:52 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
>cdtyjv, сегодня, 10:00 [16632524] >Немного посидев ... Здесь сидели несколько дольше. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:44 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
ВМоисеев , Ну хз насколько там грамотные люди все это писали. Короче, все более менее ясно - Java быстрее. Почему она быстрее тоже понятно - гораздо более крутой компилятор. CLR опирается на compile-time информацию, и практически беспопощен в рантайме. Java же наоборот отжигает в рантайме, и на всевозможных спекуляциях рвет .Net в клочья. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 12:55 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Свеном, допустим на данный момент Java быстрее, хотя фактов ты не предоставил. И что? Пойдёшь к своему руководителю и скажешь, что поставленная тебе задача не решаема, т.к. ".Net такой медленный"? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 13:06 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Потестируй Microsoft .NET Native что-ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 13:09 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
cdtyjv, у JIT компиляции в .NET есть недостатки. Если бы их не было, то Microsoft не занималась бы технологией .NET Native и новым JIT компилятором RyuJIT. Советую попробовать последний и сравнить результаты. .NET Native работает пока только с Modern UI приложениями так что тестировать его в контексте вычислительных задач будет труднее. P.S. Присоединяюсь к вопросу Pallaris. Где примеры равнозначного кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 14:16 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
Почитал, все не то. Натив - шляпа, никакого прироста на серверных приложениях не даст, так как там итак весь горячий код давным давно скомпилирован в натив. РиуДжит - шляпа, так как уучшают время компиляции в первую очередь, а по динамической компиляции ничего не предвидется. В общем, это все печеньки для окошечек и мобильных приложений. Я же спрашивал про сервер-сайд. Здесь .Нет по-прежнему ничего хорошего не светит. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 14:30 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
PHP + LiteSpeed Web Server (LSWS) наше всё! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 14:46 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
cdtyjvНемного посидев за симметричными микробенчмарками на Java и .Net, пришел к выводу, что .Net тормознее Java на вычислительных задачах процентов на 30% примерно. Код в студию. Иначе любой может утверждать что X медленнее Y на Z%. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 16:26 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
cdtyjvРиуДжит - шляпа, так как уучшают время компиляции в первую очередь, а по динамической компиляции ничего не предвидется. Там еще добавили поддержку SIMD инструкций которые могут помочь при вычислениях. cdtyjvНатив - шляпа, никакого прироста на серверных приложениях не даст, так как там итак весь горячий код давным давно скомпилирован в натив. Об этом мы будем судить после выхода финальной версии т.к. сейчас .NET Native работает только с Modern UI приложениями. cdtyjvЯ же спрашивал про сервер-сайд. В уме спрашивал видимо т.к. в сообщениях до этого шла речь только о вычислительных задачах. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 17:50 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
>cdtyjv, сегодня, 12:55 [16633576] >... рвет .Net в клочья . Не доказано. Здесь (16 фев 08, 13:26 [5299013] ) попытался сравнить. Результат - это не тузик и грелка. Надо иметь тест-программу и запускать её варианты (Net & Java) на одной и той же машине. И аккуратней с проверкой границ массива - проверка включена/выключена. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 19:54 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
ВМоисеев>cdtyjv, сегодня, 12:55 [16633576] >... рвет .Net в клочья . Не доказано. Здесь (16 фев 08, 13:26 [5299013] ) попытался сравнить. Результат - это не тузик и грелка. Надо иметь тест-программу и запускать её варианты (Net & Java) на одной и той же машине. И аккуратней с проверкой границ массива - проверка включена/выключена. С уважением, Владимир.Попытаться то он попытался, но бенчмарк у него некорректный, так что его цифрами можно разве что ... ну вы понели. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 19:56 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
>cdtyjv, сегодня, 19:56 [16635835] >...но бенчмарк у него некорректный... Ну да, гранаты не той системы. Вслед за gandjustas (сегодня, 16:26 [16634874]) - ваш код в студию. С уважением, Владимир. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 20:24 |
|
Почему .Net такой медленный?
|
|||
---|---|---|---|
#18+
ВМоисеев , Я не могу выкладывать проприетарный код. Что до ваших бенчмарков, то вам надо было сначала хотя бы прогреть JVM-ку, и убедиться, что компиляция завершилась. После этого хорошо бы взглянуть на сгенерированный ассемблерный код, что бы убедиться, что вы действительно меряете именно то, что хотите: что не сработал dead code elimination, что циклы либо одинаково на месте, либо одинаково раскрутились на обеих платформах, и т.д.. А то это все от лукавого - сравнение непонятно чего с непонятно чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2014, 20:40 |
|
|
start [/forum/topic.php?fid=20&startmsg=38760230&tid=1402416]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 324ms |
total: | 479ms |
0 / 0 |