2009-11-29 83 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++最好不好。無論如何,如果你正在設計一個服務器端應用程序,資源使用將不會是(例如)指數級的。無論您使用什麼套接字實現,您都可以像線性升級一樣。

最後,沒有什麼你不能通過硬件來修復它。