Здравствуйте, Sinclair, Вы писали:
Рад видеть тебя и здесь
.
S>Ты пытаешься сделать это очень странным методом. Ни по одному из вопросов, которые ты задаешь, не видно, что ты исследуешь эффективность дотнета.
А за каким богом мне тогда вопрос о memset задавать было ?
S>Ну какое отношение к эффективности имеет возможность декларировать вложенные структуры в методах?
Это — не имеет. Это просто был вопрос о том, можно или нет. Чтобы знать на случай портирования. Потому как написал я это по привычке, а компилятор ругается. И ответили мне сразу, и закрыть вопрос можно было, хоть и высказал я некоторое недовольство. А тут началась вселенская дискуссия
S>Угу. При этом ты почему-то вместо прямого вопроса типа "насколько дорого стоит A a = new A() для value-типов" начинаешь задавать совершенно другие вопросы, типа "как занулить все поля структуры, но по-другому, чем мне советуют".
Именно. Потому что (еще раз объясняю) я не знаю, где тут возможные проблемы имеются. И когда вижу нечто, мне подозрительное, спрашиваю. нельзя ли это сделать способом, который мне хорошо знаком и никаких сомнений не вызывает. А начни я спрашивать про все конструкции — тогда для меня отдельный форум придется создать
S>Ты подходишь к дотнету с плохо скрытым внутренним вопросом типа "не правда ли, это тормозной и прожорливый отстой?"
Можешь думать, что тебе хочется, но в данном случае ты не прав. Я подхожу к нему совершенно нейтрально. Я подхожу с вопросом вот каким. Мне предлагается новый для меня инстумент. Кто его хвалит, кто нет — я это принимать во внимание сейчас не буду. Я одно хочу знать — смогу ли я на нем делать с той же эффективностью то, что я умею делать.
Если бы (допустим) я С++ не знал, а переходил на него с Паскаля (кстати, и не допустим — было такое в моей жизни), то я бы не сомневался в том, что смогу. Надо только конструкции новые понять, ругнуться несколько раз по поводу кошмарного синтаксиса (по сравнению с Паскалем
, а вообще-то это средства примерно равномощные (не придирайся только к этим словам) и эффективность будет та же. И то подводные камни в этом плане есть, и не мешало бы их знать, прежде чем что-то серьезное делать. А тут мне предлагается инструмент, в котором эффективнсть бог знает какая, то ли компилятор, то ли интерпретатор, механизмы для меня непривычные, чему можно верить — не знаю, пробую элементарное (DirectoryInfo) — получаю кошмар. Где еще проблемы ТАКОГО рода скрыты? Не знаю. Подозреваю все. И new для value тоже.
>Это неправильный вопрос. Пока ты будешь им задаваться, никакого успеха ты не достигнешь. Надо ставить вопрос так: "Как писать эффективные приложения на дотнет?" Как ни странно, это возможно.
Вот это уже лучше. Я и хочу это понять, Я и недоволен тем, что то, что должно быть эффективным (потому что я очень даже хорошо знаю, что здесь делается хоть на уровне kernel32, хоть ntdll.dll, хоть даже ntoskrnl, вдруг 57 Мбайт требует. И что еще меня подобное здесь ждет ?
S>В общем и целом, этот вопрос уже поднимался не один раз. И в том числе на RSDN.
S>Для того, чтобы пользоваться дотнетом, надо научиться ровно одному — доверять рантайму. Ты уже доверяешь компилятору плюсов и тебе это кажется очевидным.
Черта с два. Я просто знаю, на что он это компилирует. А если малейшие сомнения появятся, посмотрю дизассембленрный код. Но, конечно, я реально знаю, что и как можно делать.
(Хотя я вот лично знаю людей, которые до сих пор с подозрением относятся к плюсам и искренне полагают, что могут порвать любой компилер своими ассемблерными вставками. Увы, я пока ни разу не видел реального примера, где бы рвался хотя бы VC7.1 в релизе, не говоря уже про Intel)
Ну это особая тема. Если хочешь, можно подискутировать как-нибудь.
S>Ты не один такой. Для подавляющего большинства разработчиков на плюсах переход на управляемую среду связан с преодолением внутреннего барьера. Я в свое время сломал этот барьер после того, как увидел своими глазами мейл-релей на чистой джаве, который рвал своего нативного аналога примерно в пять раз по производительности.
S>После этого я начал понимать, что в очень широком классе приложений затраты на "управляемость" пренебрежимо малы по сравнению с простоями, вызванными неэффективными алгоритмами. А алгоритмические оптимизации более чем доступны и в дотнет.
Дело в том, что есть задачи разных классов. И трудно сказать, где и что может всплыть. Я же не спорю, что Java для апплетов хорошо подходит. Но да помилуй бог того, кто вздумает PhotoShop на Java написать.
S>Кроме того, если тебе захочется написать в форум что-то типа "вот на плюсах я банально вызывал вот такую функцию из kernel32 и был щаслив", то не пиши это в форум. Банально вызови вот такую функцию из kernel32 через PInvoke и будь щаслив. В плюсах ты получаешь некоторую экномию времени только благодаря тому, что для тебя уже написаны тонны хидеров, корректно импортирующих все что надо. Для С# аналогом является http://pinvoke.net/. Все, что ты захочешь запэинвокать в ближайший год, там уже декларировано.
Был там. Естественно, это хорошо, но проблему не решает. Я там могу Win32 функции вызывать, ну а свои собственные ? К примеру (банальный) решиться мне, скажем, на C# матричные операции производить или же С++ DLL для этого написать, а в Шарпе только вызывать ее. Только не подумай, что я тебе этот вопрос задаю. Их много, таких вопросов...
S>Удачи!
Спасибо!