2009-02-01 4 views
1

Как вы думаете, что использование C# TCP/UDP-сокета в управляемом приложении может обрабатывать (примерно) тот же объем данных, что и родная версия C++? Если нет, то какая сумма данных, которую мы будем рассматривать native или C#, лучше использовать и что является самым большим препятствием для реализации на управляемой стороне?Есть ли штраф за производительность при управлении кодом при чтении/записи большого объема данных в сокетах TCP/UDP по сравнению с неуправляемым кодом?

ответ

3

По моему опыту, скорость и латентность сети являются более значительными факторами производительности, чем управляемый или неуправляемый код. На самом деле это то же самое касается доступа к базе данных.

1

Ответ должен зависеть, в некоторой степени, от аппаратного обеспечения.

Предлагаю вам написать небольшие прототипы программ для экспериментов.

1

Оба могут обрабатывать одинаковое количество данных. Вопрос заключается в скорости и использовании памяти. В большинстве сценариев C# проявлял себя пренебрежимо медленнее: поэтому нет причин не использовать его. При использовании C# для сокетов есть несколько проблем с памятью (в основном, происходит много пиннинга, которое будет фрагментировать вашу кучу). Самое главное, чтобы получить право, задокументировано here. Если ссылка сломана (не работает моя сторона, но, возможно, это наш изворотливый интернет), у Google есть cached.

 Смежные вопросы

  • Нет связанных вопросов^_^