2009-11-29 51 views
2

我有一个服务器端项目,必须在.Net平台上开发,但我怀疑c#套接字的性能,有些人告诉我C#应用程序总是会吃很多内存,特别是当不断交换大量数据即时的。内存数据回收太慢。任何人都对C#套接字性能有一些想法?C#套接字vs C++套接字,哪个更好?

+8

“有些人”显然没有完全理解和了解.NET – 2009-11-29 02:00:32

+0

您是否清楚了解.NET垃圾收集器进程?它的弱点是什么?如何避免这个弱点? – 2009-11-30 01:11:22

回答

5

这取决于你。有些人可能会说C#具有更好的内置功能,因为它被更好地封装和封装。对我而言,这是个人选择。当我在.NET中开始一个新项目时,我选择了C#。在较早的应用程序中,我使用带有Socket通信的C++ Builder 5,它的速度和性能与C#版本一样好。在C++版本中(封装为C#),由于网络连接丢失或套接字上的其他错误,会有事件提供错误处理。对我来说,底线是我不会将你的应用程序的语言选择基于套接字。

2

我会坚持到C#图层。从错误处理的角度来看,这是一个更安全的环境,如果你的套接字和线程模型被正确设计(就像你必须从C++中完成),我不相信你会看到显着的性能影响。

5

C#套接字没有明显的性能损失。

除非您的应用程序经常受CPU限制,否则您将从C#解决方案所隐含的安全性中受益,远比非托管C++解决方案的任何性能优势更大。

+0

是不是C#套接字需要注意内存泄漏? – 2009-11-29 02:36:58

+1

.NET框架在处理内存和防止泄漏方面做得非常好 – Paul 2009-11-29 02:45:09

1

使用C#。托管C++最好不好。无论如何,如果你正在设计一个服务器端应用程序,资源使用将不会是(例如)指数级的。无论您使用什么套接字实现,您都可以像线性升级一样。

最后,没有什么你不能通过硬件来修复它。