Задать вопрос
@ArsenBor66

Правда ли, что программы написанные на C++ работают быстрее чем аналогичные на C#. к примеру?

И чем обусловлена эта првевосходность, если такова существует?
  • Вопрос задан
  • 1773 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 4
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
в общем случае правда. Обусловлено отсутствием виртуальной машины (в случае с c# это CLR). Но такие моменты могут оказаться и плюсами (некоторые вещи связанные с кешированием динамических функций например).
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Программы написанные на C# компилируются в байткод, который потом выполняется виртуальной машиной. Грубо говоря, эмулятором процессора. К тому же программы на C# используют автоматическое управление памятью, поэтому их выполнение периодически приостанавливается для сборки мусора.
Ответ написан
@finlandcoder
В 2018 году скорость С++ в 2-3 раза выше, чем C#. Но тут еще нужно учитывать кривизну рук программиста и алгоритмы. Так что разницы никакой нет. Вы, конечно, можете как дополнение к своему computer science fundamentals, разобраться в этом вопросе или нагуглить.
https://days2011.scala-lang.org/sites/days2011/fil...
В том же Амазоне на некоторых сервисах 90% Scala и 10% С++.
Причины тормозов - GC (вызывается каждый {}), VM и всякие "Boxing and Unboxing". Также - память. VM может работать с пулами памяти и выделять сразу сотню мегабайт. Но это всё тюнится. Вон в амазоне отключают GC у Java VM.


void func1(string s) // будет работать в Java быстрее, чем в С++
Ответ написан
Комментировать
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
кроме всего перечисленного, код C# (точнее рантайм дотнета), обращается к системе чрез библиотеки посредники

но в конечно итоге, все зависит от задачи. чисто вычислительные алготритмы, могут приближаться к сопоставимому времени выполнения. особенно при использовании Ngen, а при активном использовании системных ресурсов, разрыв может расти весьма существенно

так же зависит от стиля программирования. тот же C++ постепенно обрастает возможностями функционального программирования (хотя C# быстрее). данная парадигма может сократить время разработки и повысить надежность кода, но обычно ценой как раз производительности
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы