Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Будет ли программа на языке C# также эффективна, как программа на языке Си, если убрать сборщик мусора?

ПрограммированиеC#Язык си
Анонимный вопрос
Я ЛЮБЛЮ ТЕБЯ
  · 2,2 K
Веб-разработчик, геймер, специалист по этике  · 5 дек 2021
Если программа сделает всё, что от неё требовалось, до первого раунда сборки мусора, то будет. 😏
Когда мы рассуждаем на уровне "С против C#", нельзя рассуждать об эффективности. Эффективность бывает у программ, уже запущенных на компьютере и работающих. На этом этапе никакого С и C# уже нет, операционная система отправила процессору бинарный код на исполнение. Поэтому тут уже в самом вопросе проблема.
Если подключить телепатов и додумать суть вопроса, то, наверное, вопрос звучит так. "Пусть есть две программы, которые делают одно и то же, но одна из них написана на C#, а другая на C. Если мы отключим сборку мусора в C#, соберём обе программы и запустим, будет ли производительность программ одинакова?".
Этот вопрос всё ещё некорректен. В C# нет сборки мусора, потому что это язык программирования, набор правил по написанию исходного кода. Сборка мусора производится средой .NET, и её просто невозможно там выключить, не переписав всю систему. В C# даже нет языковой конструкции, которая бы явно удаляла объекты. Как вы собираетесь вручную освобождать память в программе на C#, если язык этого не предполагает?
И в итоге мы приходим к ситуации, прекрасно описанной поговоркой "если бы у бабки были бы яйца, она была бы дедкой". Если мы выкинем из .NET сборку мусора, то нам придётся добавить в C# методы для ручного управления памятью. Виртуальную машину .NET без сборки мусора можно упростить до такой степени, что она станет статичной прослойкой между исходным кодом и результирующим бинарником. На этом этапе мы обнаруживаем, что мы просто программируем на С с большим количеством синтаксического сахара и встроенных библиотек.
Работаю программистом. Увлечён программированием.   · 3 окт 2021
Вопрос задан не совсем корректно, но я постараюсь на него ответить. - Во-первых, нельзя просто говорить о эффективности программы, не уточная конкретные характеристики и бенчмарки (способы проверки характеристик программы). Так, если говорить о вычислениях с простыми типами, то программа на C# работает ни чуть не медленнее, чем на Си. Кроме того, при использовании... Читать далее
2 эксперта согласны
В общем и целом верно, но я бы ещё обязательно добавил автоматическую проверку границ массива, которая далеко не... Читать дальше
программист  · 4 окт 2021
Вообще сам вопрос поставлен крайне странно. И ответ на тот вопрос, который перед вами стоит, а не тот, что вы задали скорее всего такой: не заморачивайтесь берите C#, в конечном итоге это будет правильным выбором. Если же отвечать на ваш, узким образом сформулированный вопрос, то ответ будет таким: 1. Если убрать из С# сборщик мусора, то это уже не будет C#. 2... Читать далее
1 эксперт согласен
Тут даже добавить нечего :)