加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何实现一个高性能的Socket后端 (C#,CSharp)

(2011-03-08 16:59:02)
标签:

it

分类: c#

 

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

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

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

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

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

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

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有