Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос:  Рихтер "Программирование для .NET" Добавлено: 09.02.06 21:51  

Автор вопроса:  vito | Web-сайт: softvito.narod2.ru
Разработчики с опытом программирования на неуправляемых C/C++, вероят-
но, задумаются над производительностью. В конце концов неуправляемый код
компилируется для конкретного процессора и при вызове просто исполняется.
В управляемой же среде компиляция производится в две фазы. Сначала компиля-
тор проходит исходный код и переводит его в IL. Но для исполнения сам IL-код
нужно перевести в команды процессора в период выполнения, что требует допол-
нительной памяти и процессорного времени.

Поверьте: я сам из тех, кто программирует на C/C++, и, переходя на CLR, я до-
статочно скептически рассматрив;ш все эти дополнительные накладные расходы.
Вторая стадия компиляции, имеющая место в период выполнения, снижает скорость
и требует дополнительной динамической памяти — с этим не поспоришь. Однако
Microsoft проделала большую работу, чтобы свести эти издержки к минимуму.
Если вы тоже скептик, сами создайте приложение и проверьте его производи-
тельность. Кроме того, можете взять какое-нибудь нетривиальное приложение от
Microsoft или другого разработчика и измерить его производительность. Я думаю,
вас удивит, насколько она высока на самом деле.

Трудно поверить, но многие (включая меня) считают, что управляемые при-
ложения производительней неуправляемых, и тому есть масса подтверждений.
Например, когда JIT-компилятор компилирует IL-код в команды процессора в
период выполнения, он располагает более полными сведениями о среде выпол-
нения в сравнении с компилятором неуправляемого кода. Вот некоторые спосо-
бы, которые позволяют управляемому коду «опередить» неуправляемый,

• JIT-компилятор может обнаружить, что приложение запускается на процессо-
ре Pentium 4 и сгенерировать процессорный код, полностью использующий
все преимущества особых команд Pentium 4- Неуправляемые приложения обыч-
но компилируются в расчете на процессор, являющийся «наименьшим общим
знаменателем», избегая специфических команд, которые заметно повышают
производительность приложения на новейших процессорах.
• JIT-компилятор может обнаружить, что некоторая проверка всегда приводит
к отрицательному результату на конкретной машине. Например, рассмотрим
метод с таким кодом:
if (numberOfCPUs > 1) {
i
}
Этот код указывает JIT-компилятору, что для машины с одним процессором
не нужно генерировать никакие команды процессора. В этом случае собствен-
ный код процессора оптимизирован для конкретной машины: он короче и
выполняется быстрее.

• CLR может проанализировать выполнение кода и перекомпилировать IL-код в
команды процессора при выполнении приложения. Перекомпилированный код
может быть реорганизован с учетом обнаруженных некорректных прогнозов
ветвления.

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


З.Ы. В некотороых случаях, особенно, при сложных мат. вычислениях, я замечал что код написанный под .NET работает быстрее С++.

Ответить

  Ответы Всего ответов: 47  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 09.02.06 23:10
Значит код написанный на С++ был написан не удачно :)

Ответить

Номер ответа: 2
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #2
Добавлено: 09.02.06 23:46
sne

Без шуток, math class заоптимизили до предела(всю мощь бросили:)), и при прочих равных, он превосходит превосходит библиотеку С++.

Сам не знаю почему такое получатся - алгоритмы - одинаковые, функции тоже, языки схожие С# и С++???
Можно сказать листинги почти неотличимые. Было как - то дело, пробовал. А вот вроде как и ответ:))

Ответить

Номер ответа: 3
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #3
Добавлено: 09.02.06 23:58
Да надо добавить, сделать удалось, только с помощью intel компилера, изрядно поколдовав над настройками (приерутив по максимуму).

Ответить

Номер ответа: 4
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #4 Добавлено: 10.02.06 00:02
Не хватает подписи снизу: На правах рекламы :)

Управляемый код по определению не может быть быстрее неуправляемого, если алгоритмы одинаковые.
Потому что на управление (организацию и прочую требуху) требуется время. И от этих потерь свободен неуправляемый код.
Это ясно как божий день.

А то, что сравнивается "заоптимизированный" math class с каким-то другим - это некорректно.
Чтобы утверждать, что управляемый быстрее, нужно иметь равные условия (в т.ч. и одинаково оптимизированные алгоритмы)
Собственно, приводя пример с math class, ты сам подтверждаешь некорректность сравнения.

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 10.02.06 00:30
языки схожие С# и С++

Эта фраза меня убивает :))

если управляемый код работает быстрее неуправляемого, значит неуправляемый был написан криво :) либо под старенький процессор, к примеру 486 ;)

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 10.02.06 00:37
PS
Рихтера я так же читал... И не только эту книжку :) С тем что управляемый код еще может быть чуть быстрее, согласиться могу... Но если сосчитать время на загрузку приложения, то даже самый жестокие вычисления будут подавлены скоростью запуска .НЕТ приложений их интерпритацией (первый запуск) и подгрузкой загрузчиком кода... Кстати управляемый код не может выполняться без Windows User Mode Driver Framework... А если учесть что этот сервис такой же процесс как и все :) с приоритетом средний... + в Windows имеется вытесняющая многозадачность :) При нагруженном процессоре все точечные приложения будут радостно загружаться... но долше :P

Ответить

Номер ответа: 7
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #7
Добавлено: 10.02.06 00:49
sne
HOOLIGAN

Это все прописные истины, и ясно что Рихтер в этой книге на правах рекламы:).
Но все ж, для истины в его книге есть.
MS, чтоб обеспечить хоть сколь нибудь приемлемую призводительность, ДОЛЖНЫ были очень тщательно поработать над классами. (Что доказал ЧАСТНЫЙ пример)
А вообще при прочих равных - это тормоз. Я по крайней мере с С++ пока переруливать не собираюсь.

Но смотреть по сторонам не лишне.
А вообще меня ОЧЕНЬ интересует мнение провалась .NET или рулит?
На мой взгляд, при беспрецендентной рекламной компании - отдача крайне низкая, то есть фактически провал(а сколько уже лет прошло?).

Ответить

Номер ответа: 8
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #8
Добавлено: 10.02.06 01:02
Самое главное забыл. :)
Интелектуальность JIT компилера - рекламный блеф, или это действительно хоть частично реализовано?

Ответить

Номер ответа: 9
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 10.02.06 01:10
А вообще меня ОЧЕНЬ интересует мнение провалась .NET или рулит?

Истина выведена давно :) Каждая тулза для своего задания :)

На мой взгляд, при беспрецендентной рекламной компании - отдача крайне низкая, то есть фактически провал(а сколько уже лет прошло?).

7 Лет уже прошло почти... Рекламируют сильно... но и продукт тяжелый и программеры не тот народ что кидаются на новинки как обезьяны на бананы... Если бы что-то подобное продвигали среди системных админов, а они ужасно консервативный народ :), то, думаю, понадобилось не менее лет 20-ти :))

Ответить

Номер ответа: 10
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #10
Добавлено: 10.02.06 01:40
Каждая тулза для своего задания :)

Вот я и думаю, для какого залания ее можно использовать:) Эффективнее других равнозначных:)

Ответить

Номер ответа: 11
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #11
Добавлено: 10.02.06 01:47
Чтобы что-то сосчитать много эффективнее заюзать готовое решение, MathLab - если требуется писать макросы, MathCAD - если требуется обсчитывать что сложное, но не автоматизированое :)

Ответить

Номер ответа: 12
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #12
Добавлено: 10.02.06 02:06
Мне она нравится в разрезе сетевых разработок. Собственно .NET:)
В остальном пока преимуществ не нахожу.

Ответить

Номер ответа: 13
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #13
Добавлено: 10.02.06 02:23
В разрезе сетевых - он несколько сумбурен, одно и то же реализовано в нескольких местах еще к тому же... Отсылать что текстовое, все замечательно, что бинарное... уже не удобно, хотя я с ним и мало общался :)

Ответить

Номер ответа: 14
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #14
Добавлено: 10.02.06 02:56
Что касается сетей.
То же Рихтер вещает - .NET будет реализован для ВСЕХ платформ!
PE будут работать под Никсами и т.д.!

Да, такого подарка от MS конкурентам и не снилось:)
Для сетей, кроссплатформенность - основа успеха технологии.

Или MS видит будущее ТОЛЬКО под управлением своей операционки?
Иначе, зачем такой беспрецендентный по масштабам проект?


З.Ы. Так что, все таки, думается по поводу интелектуальности JIT компилятора?

Ответить

Номер ответа: 15
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #15
Добавлено: 10.02.06 14:39
Беспрецендентность этого проекта такая же, как у Windows 95. Примерно столько же он и проживет. А тем временем под никсами прекрасно работают до сих пор программы, написанные в начале 80-х.
Я сомневаюсь в интеллектуальности JIT-парсера, т.к. овчинка не стоит выделки. Получение преимущества от использования новых конструкций современных процессоров (SSE, 3DNow etc) возможно на небольшом классе приложений, которые на дотнете не пишут.

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам