Существует ли снижение производительности управляемого кода при чтении / записи большого объема данных на сокете TCP / UDP по сравнению с неуправляемым кодом? - PullRequest
1 голос
/ 02 февраля 2009

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

Ответы [ 3 ]

3 голосов
/ 02 февраля 2009

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

1 голос
/ 02 февраля 2009

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

1 голос
/ 02 февраля 2009

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

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

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