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

 И чем обусловлена эта првевосходность, если такова существует? 

 в общем случае правда. Обусловлено отсутствием виртуальной машины (в случае с c# это CLR). Но такие моменты могут оказаться и плюсами (некоторые вещи связанные с кешированием динамических функций например). 

 Программы написанные на C# компилируются в [байткод](https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B9%D1%82-%D0%BA%D0%BE%D0%B4), который потом выполняется [виртуальной машиной](https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0). Грубо говоря, эмулятором процессора. К тому же программы на C# используют автоматическое управление памятью, поэтому их выполнение периодически приостанавливается для [сборки мусора](https://ru.wikipedia.org/wiki/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0). 

 В 2018 году скорость С++ в 2-3 раза выше, чем C#. Но тут еще нужно учитывать кривизну рук программиста и алгоритмы. Так что разницы никакой нет. Вы, конечно, можете как дополнение к своему computer science fundamentals, разобраться в этом вопросе или нагуглить.   

[https://days2011.scala-lang.org/sites/days2011/fil...](https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf)  

В том же Амазоне на некоторых сервисах 90% Scala и 10% С++.  

Причины тормозов - GC (вызывается каждый {}), VM и всякие "Boxing and Unboxing". Также - память. VM может работать с пулами памяти и выделять сразу сотню мегабайт. Но это всё тюнится. Вон в амазоне отключают GC у Java VM.  
  

>   
> 
> void func1(string s) // будет работать в Java быстрее, чем в С++  
> 

 

 кроме всего перечисленного, код C# (точнее рантайм дотнета), обращается к системе чрез библиотеки посредники  
  

но в конечно итоге, все зависит от задачи. чисто вычислительные алготритмы, могут приближаться к сопоставимому времени выполнения. особенно при использовании [Ngen](https://ru.wikipedia.org/wiki/Ngen), а при активном использовании системных ресурсов, разрыв может расти весьма существенно  
  

так же зависит от стиля программирования. тот же C++ постепенно обрастает возможностями [функционального программирования](https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) (хотя C# быстрее). данная парадигма может сократить время разработки и повысить надежность кода, но обычно ценой как раз производительности