(Это должен был быть общий гипотетический вопрос, я жаловался, что .NET - это свинья, и просил причины. На самом деле это не был вопрос о моем конкретном приложении.) *
В настоящее время я переписываю старый код C ++ на C #. Мы портируем все устаревшие приложения. У меня есть приложения C ++, которые занимают максимум 3% процессора. В основном они не используют ни один. Затем я беру код, копирую и вставляю, затем переформатирую в синтаксис C #, библиотеки .NET и BAM! 50% ЦП. В чем причина этого? Сначала я думал, что это JIT, но даже после каждого пути кода были упражнения, и все это было в JIT-редакторе, та же проблема.
Я также заметил огромное увеличение памяти. Приложения, которые занимали 9 МБ при полной загрузке, теперь начинаются с 10 МБ и работают с 50 МБ. Я понимаю, что аппаратное обеспечение дешево, но я хочу понять, что вызывает это. Это повод для тревоги, или .NET - это всего лишь свинья?
Обновление 1 Ответ Skeet
Я знаком с C #. Я меняю вещи на Linq и так далее. Я обычно беру код и сокращаю количество строк и так далее. Не могли бы вы привести еще несколько примеров того, как человек на C ++ может ошибаться в .NET?
Обновление 2
Это должен был быть общий вопрос, но конкретное приложение, которое имеет эту проблему, выглядит следующим образом.
Он имеет поток, который использует и драйвер ODBC для получения данных из парадокса БД. Затем он использует Linq, чтобы преобразовать это в базу данных SQL и опубликовать ее. Я запустил его через профилировщик ANTS, и кажется, что заполнение набора данных занимает больше времени. Вслед за публикацией Linq. Я знаю, что некоторые из моих областей - это использование рефлексии, но я не понимаю, как сделать то, что мне нужно, без этого. Я планирую изменить мою строку на строителей строки. Есть ли разница между этими двумя?
(int)datarow["Index"]
и
ConvertTo.Int32(datarow["Index"])
Я изменил всю конкатенацию строк для форматирования строк. Это не уменьшило над головой. Кто-нибудь знает разницу между считывателем данных и адаптером данных и наборами данных?