Как я могу улучшить код C #, чтобы доказать, что C # может быть таким же быстрым, как C ++, моему коллеге?
Ты не можешь. Есть законные области, где C ++ существенно быстрее, чем C #. Но есть также области, где код C # будет работать лучше, чем эквивалентный код C ++. Это разные языки с разными сильными и слабыми сторонами.
Но, как программист, вы действительно должны основывать свои решения на логике.
Логика требует, чтобы вы сначала собрали информацию, а затем решили на ее основе.
Вы, наоборот, сначала приняли решение , а затем искали информацию для его поддержки.
Это может сработать, если вы политик, но это не очень хороший способ писать программы.
Не ищите доказательств того, что C # быстрее C ++. Вместо этого, проверьте, какой вариант быстрее в вашем случае .
В любом случае, если вы хотите доказать, что X может работать так же быстро, как Y, вы должны сделать это обычным способом: сделать X так же быстро, как Y. И, как всегда, при настройке производительности профилировщик - это ваш лучший друг. Узнайте, где именно проводится дополнительное время, а затем выясните, как его устранить.
Однако использование памяти потеряно. .NET просто использует больше памяти по нескольким причинам:
- имеет большую библиотеку времени выполнения, которая должна присутствовать в адресном пространстве процесса
- .NET-объекты имеют дополнительные члены, которых нет в классах C ++, поэтому они используют больше памяти
- сборщик мусора означает, что у вас обычно будет некоторое количество памяти «больше не используется, но еще не утилизирован». В C ++ память обычно освобождается немедленно. В .NET это не так. .NET основан на предположении, что память дешева (что обычно так)