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