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

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

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

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