C#socket vs c ++ Socket,哪个更好?

时间:2009-11-29 01:58:58

标签: c# sockets

我有一个必须在.Net平台上开发的服务器端项目,但我怀疑c#socket的性能,有些人告诉我C#应用程序总是占用大量内存,特别是在不断交换大量数据时实时。内存数据回收太慢了。有人提出一些关于C#套接字性能的想法吗?

4 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

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

除非您的应用程序始终受CPU限制,否则您将从C#解决方案隐含的安​​全性中受益,而不是非托管C ++解决方案的任何性能优势。

答案 2 :(得分:3)

我会坚持使用C#层。从错误处理的角度来看,这是一个更安全的环境,如果您的套接字和线程模型设计得恰当(就像您在C ++中所做的那样),我认为您不会看到显着的性能影响。

答案 3 :(得分:1)

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

最后,通过向它投掷硬件,你无法解决这个问题。