Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интересная статья, о производительности в .NET 
:(
    Опции темы
Experimenter
Дата 7.11.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



Вот такую статью нарыл

Честно скажу, оставила она у меня двоякое впечатление.
С одной стороны, дотнет как человеку, который с него и начал, дал мне почву для творчества на многие годы. Как технология безусловно интересная, новая и почти всемогущая. Тем более, что дотнет сейчас меня кормит.
С другой стороны постепенно начинаю ощущать легкое разочарование. К чему тогда все это бесчисленное количество возможностей, если от него производительность страдает? Плюнуть на эти возможности и ограничиться элементарными операциями, к которым сводятся перегруженные методы в .NET? Или не заморачиваться над этим, никто ж с секундомером возле моей программы не стоит? И к чему мелкие нас готовят дальше, чтоб любой, не только программист, смог открыть студию, накидать на форму контролов, выставить им свойства и создать прогу для своих потребностей без единой строчки самописного кода, и неважно, что там в памяти твориться будет?

В общем, слушаю ваши мнения, а также может у кого ссылки есть, как не надо писать код.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
0000
Дата 7.11.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.7.2006
Где: Нижний Новгород

Репутация: 2
Всего: 5



любопытная статейка...я где-то раньше подобные встречал..
для меня на данный момент вопрос производительности важен, поскольку большинство своих разработок сейчас веду под Compact Framework и Windows Mobile, а тут с производительностью туго...

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

все имхо

ЗЫ. пасиба за статью, закрою еще пару тормозничков в работе  smile 
PM MAIL ICQ   Вверх
Experimenter
Дата 7.11.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



Вот еще фишка, документирована она или нет, неизвестно, нашел у Троелсена.
Раньше без всякой задней мысли использовал код:
Код

string s = "First Word";
s += " Second Word";

Так вот, говорит Троелсен, всякое такое присоединение строк приводит к созданию в памяти копии первоначальной строки, к которой прибавляется уже " Second Word". Первичное же значение ожидает сборки мусора. Если работаешь со строками небольшой величины, то это как бы и неактуально. А если выполнить присоединение 1000 раз, еще и строчки длинные? Поэтому, говорит Троелсен, используйте StringBuilder, он и только он работает непосредственно со строкой в буфере. Для меня это было откровением, может и еще кто не знает этого.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
altarvic
Дата 7.11.2007, 15:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 2.3.2007

Репутация: 1
Всего: 1



По этому поводу читайте Рихтера и MSDN'овские статьи типа "CLR Inside" 
Откровений будет много smile
Не думаю что простые юзеры будут способны на большее чем "Хеллоу Ворлд!"
Тенденция идет к разделению процессов написания кода и рисования интерфейса, причем и там  и там без проффессиональной подготовки врядли чего-то можно добиться. У дотнета своя ниша на рынке, там где нужны быстрые алгоритмы и скорость - C++
PM MAIL   Вверх
Wizard_Memfis
Дата 7.11.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 12.2.2007
Где: г. Донецк, Украин а

Репутация: 1
Всего: 4



Согласен 
Цитата

У дотнета своя ниша на рынке, там где нужны быстрые алгоритмы и скорость - C++

C# - прежде всего быстрая и довольно качественная реализация поставленной задачи!
--------------------
www.binary-studio.com
PM MAIL WWW ICQ Skype   Вверх
thomas
Дата 7.11.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



Неплохо.
Мне например хочеться сказать, что многое зависит от того как учат программировать.
Если препод в школе Ас, то он нормально преподает и рассказывает что как и почему нужно делать, а потом на примерах использования для решения тех или иных конкретных задач показывает плюсы и минусы того или иного действа. Плюс подробный разбор полетов после выполнения домашних заданий.  Но таких преподов мало. Не зря говорят: "все познается в сравнении". 

А статья полезная.

Добавлено через 7 минут и 47 секунд
В связи вспомнился анектод про методы оперирования гланд.
"типа на международном медицинском конгрессе после того как западные светилы рассказали о каких-то умопомрачительных и супер сложных методиках проведения операций на сердце или мозг,некие отечественные спецы заявили о том, что они разработали новый метод оперирования гланд - через анальное отверстие и афтогеном"

К чему это? Каждую задачу можно решить тремя способами:
- нормально;
- оптимально;
- и через одно место.
Для первого надо представлять как это работает.
Для второго иметь креативное мышление и ОЧЕНЬ хорошо представлять как это работает.
Ну а третье и так понятно, знаний точно не хватает.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Baa
Дата 7.11.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 1
Всего: 12



Цитата(Experimenter @ 7.11.2007,  15:17)
Вот еще фишка, документирована она или нет, неизвестно, нашел у Троелсена.
Раньше без всякой задней мысли использовал код:
Код

string s = "First Word";
s += " Second Word";

Документирована, конечно, более того, встречается на сертификационных экзаменах MS.
Все дело в том, что string immutable (Хотя на самом деле это не совсем так и через unsafe он меняется ;-) ). 
Даже простая фигня вроде s = s.Replace ("bla", "lab") ведет к созданию новой строки smile
MS рекомендует использовать StringBuilder, String.Join, String.Format.


Это сообщение отредактировал(а) Baa - 7.11.2007, 16:40


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
archeg
Дата 7.11.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Да, согласен, это немного обидно то что .нет работает не всегда так быстро как бы хотелось, но каждый программист выбирает свое. Иногда нужно чем-то пожертвовать ради таких удобств как автоматическая сборка мусора. Может быть мне так легко об этом говорить, поскольку я практически никогда не работал с другой сборкой мусора  smile Но многие статьи меня напугали и я не хочу работать с другой smile 

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

П.С. Хорошего профа по шарпу я представляю себе как такого человека, что может написать офигенно ясный, функциональный и быстрый код. Именно в таком порядке - сначало ясный, потом функц. а потом уже быстрый. Профа по спп я себе представляю как человека который может написать офигенно быстрый и функциональный код. То же именно в таком порядке. И вряд ли он будет ясный  smile 

П.П.С. Вся эта фигня со стрингами, как нистранно сделана для скорости и для економии памяти. Расчитано на то что програмист должен понимать разницу между стрингами и стринг билдером. Простой стринг - он интернованый. То есть два одинаковых стринга в памяти на самом деле есть один объект. По этому его просто нельзя менять - это приведет к непередвиденным результатам. То есть создав:
Код

string s1 = "Hello world!";
string s2 = "Hello world!";

Получим два указателя на одну область памяти где хранится "Hello world!" Конечно же все это документировано и большинство авторов обращают на это внимание. Советую почитать Рихтера, у него привычка говорить не просто "что" а еще и "как" и "почему" - что намного интересней, и для меня именно это критерий профа.

Это сообщение отредактировал(а) archeg - 7.11.2007, 16:52


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
Baa
Дата 7.11.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 1
Всего: 12



А по поводу концепции упрощения интерфейсов, так всё дело в том, что сейчас сроки на разработку программного обеспечения становятся всё меньше и меньше. Единственный способ успевать всё вовремя - иметь хорошую библиотеку классов, чего Майкрософт и старается сделать. Как-то было рассуждение на их форуме, мол, .NET не дает достаточной скорости для общения с COM портом, так этому человеку ответили, что для этого есть С++, а C# нужня для быстрой разработки "корпоративных" приложений.
Сейчас, как и раньше, необходимо правильно выбирать инструмент. Если вы хотите быстроты и 100% контроля, то выбирайте С++, а если хотите делать всё быстро, то тогда C#.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Experimenter
Дата 7.11.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



Да, Рихтера осваиваю понемногу, когда время есть.
Цитата

Не думаю что простые юзеры будут способны на большее чем "Хеллоу Ворлд!"

Думаю, что будут способны, когда кодинг уподобится процессу записи макросов в МС Офис.

Добавлено через 9 минут и 38 секунд
Вообще благодаря классам-заготовкам .NET успеваешь очень много сделать. Ну а с производительностью - в принципе тоже есть время позаниматься, проанализировать, так сказать - ювелирно довести опять же благодаря тому, что много успел раньше. Но - появился резон засесть за С++. Эх, где на все время найти...


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
thomas
Дата 7.11.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



Experimenter
Цитата

Думаю, что будут способны

Не а.
Посмотри на темы в Базах данных.
Многие когда используют дизайнер для датасет потом задают много вопросов а почему то, а почему сё. Потому как студия сама генерит код, а "программер" не понимает какие процессы происходят или должны происходить за кулисами дизайнера чтобы программа показывала нужные данные в нужном месте или при выборе одного в другом месте показывалось ему соответствующее, да еще и сохранялось в БД при изменении. ИМХО

Добавлено через 5 минут и 9 секунд
Цитата

 Но - появился резон засесть за С++. Эх, где на все время найти...

Я бы предпочел, "поглубжее" вникнуть как работает C# и VB в .NET.Лучше быть специалистом в узкой области, чем ...(нужное подставте сами) широкого профиля. 


Это сообщение отредактировал(а) thomas - 7.11.2007, 18:48


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Experimenter
Дата 7.11.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



thomas
Цитата

Я бы предпочел, "поглубжее" вникнуть как работает C# и VB в .NET
тоже верно, но нужда заставляет, не то чтобы производительность не устраивала или еще что-то, но вот нужна сейчас библиотека на Си-шарп, работающая с СОМ-приложениями, а без понимания принципов их работы никак. Так что почитываю, заинтересовался. А так конечно, куда ж я без дотнета. Это хлеб мой!
У нас был один такой кадр на работе, сыпал терминами и определениями из ИТ-технологий и программирования так что можно было червяком себя почувствовать, а как до дела дошло - код написал ни к черту, глюк на глюке, баг на баге... Короче, уволился он через три месяца, так ничего и не создав.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
tol05
Дата 7.11.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Цитата(archeg @  7.11.2007,  15:46 Найти цитируемый пост)
Хорошего профа по шарпу я представляю себе как такого человека, что может написать офигенно ясный, функциональный и быстрый код. Именно в таком порядке - сначало ясный, потом функц. а потом уже быстрый. Профа по спп я себе представляю как человека который может написать офигенно быстрый и функциональный код. То же именно в таком порядке. И вряд ли он будет ясный 


а я себе представляю так: 

хороший программер - себе код педалит и тебе педалит. И он, и ты - при деньгах

плохой программер - педалит только себе, причем много и хорошо. Он - при деньгах, а ты - в ... (нужное вставить по желанию)

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

smile


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
1stain
Дата 7.11.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 8
Всего: 40



статья приколная, только по-моему с сериализацией аффтар слегка загнался.

tol05, у тебя так не хороший программер получается, а глупый программер, который педалит себе и ленивому или тупому программеру.


--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
archeg
Дата 7.11.2007, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



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

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

З.Ы. Скорость работы не всегда решает  smile 


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0964 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.