2009-11-29 2 views
2

У меня есть проект на стороне сервера, который должен быть разработан на платформе .Net, но я сомневаюсь в производительности C# сокета, некоторые ребята сказали мне, что приложение C# всегда потребляет много памяти, особенно когда постоянно обменивается большой кучей данных в в реальном времени. загрузка данных памяти происходит слишком медленно. кто-нибудь дает некоторые идеи о производительности сокета C#?C# socket vs C++ Socket, что лучше?

+8

«Некоторые ребята» явно не имеют полного понимания и знаний .NET. –

+0

Вы ясно понимаете процесс сборщика мусора .NET? в чем его слабость? как избежать слабости? –

ответ

5

Это зависит от вас. Некоторые люди могут сказать, что у C# есть лучшие встроенные функции, потому что они обернуты и инкапсулированы лучше. Для меня это личный выбор. Когда я начинаю новый проект в .NET, я выбираю C#. В более старом приложении я использую C++ Builder 5 с Socket Communication, и он работает так же быстро, как и версия C#. В версии C++ (которая инкапсулируется как C#), есть события, которые обеспечивают обработку ошибок из-за потери сетевого подключения или некоторой другой ошибки в сокете. Суть в том, что Я бы не основывал выбор языка вашего приложения на сокетах.

2

Я бы придерживался уровня C#. Это более безопасная среда, с точки зрения обработки ошибок, и я не думаю, что вы увидите значительное влияние на производительность, если ваши модели сокетов и потоков правильно обработаны (так же, как вам нужно было бы сделать из C++).

5

C# Розетки не имеют заметного штрафа за производительность.

Если ваше приложение постоянно связано с процессором, вы получите больше преимуществ от безопасности, подразумеваемой решением C#, чем любые преимущества производительности неуправляемого C++.

+0

Не нужно использовать C# socket для удержания памяти? –

+1

.NET framework отлично справляется с работой с памятью и предотвращает утечки – Paul

1

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

В конце концов, вы ничего не можете исправить, бросив на него аппаратное обеспечение.