我是靠谱客的博主 害羞蚂蚁,最近开发中收集的这篇文章主要介绍如何实现一个高性能的Socket后端 (C#,CSharp),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

转载地址http://blog.sina.com.cn/s/blog_53b839dd0100pdg4.html
当你要创建一个对象,最好不要在事件监听函数,循环调用的函数中创建,因为只要函数体不释放,新创建的对象也永远不释放,结果造成内存泄露.
当你想用多线程去加速你的事务处理, 但你最好不要这么做,因为IOCP 已经实现了这功能,每一个接收到的Socket都是在一个独立的Thread运行的,如果再自行创建Thread,则会严重降低运行速度.

Thread的数量越多, CPU要花费更多时间在切换线程上.

如果你的计算逻辑和数据解析消耗了很大的性能,你应该考虑使用汇编语言去处理

c#为了支持各种不同的CPU结构,很多时候没有使用最新的CPU指令集,比如 SSE2,SSE3等.你可以在汇编使用这些指令去加快计算过程. (对c++编译器同样)

一个1字节的包和一个1KB的包传输过程中消耗的资源是一样的,因而对单个包进行压缩并不能提供性能.

把接受和发送的 byte[] 缓冲区大小设置为 1024,因为这是默认的TCP包大小.

事件(EventArgs),回调(AsyncCallBack),缓冲区(byte[])都应该重用,但要注意不要引起并发操作,解决办法是对每个接收到的Socket都对应独立的 事件(EventArgs)、回调(AsyncCallBack),以及缓冲区(byte[]).

最后

以上就是害羞蚂蚁为你收集整理的如何实现一个高性能的Socket后端 (C#,CSharp)的全部内容,希望文章能够帮你解决如何实现一个高性能的Socket后端 (C#,CSharp)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部