KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

程序求测,对编程不感兴趣的就不用进了。

[ 8261 查看 / 30 回复 ]

每天写几行的进度拖出来的...-v-
一个Delphi的基于WinSock2的多线程TCP Socket组件。

特点是:
1. Ring Buffer (环状缓冲)。从32字节到32M字节任意;
2. 操作简单。组件中有一个单独的线程为程序及时的处理Socket输入输出,包含了所有的异常处理,外部调用就如同文件读写一样简单;并且一个参数就可以选择是否为阻塞操作。
3. 能够实现Zero Copy (零复制)。从应用程序到系统网络堆栈中间没有任何冗余的内存复制操作,最大化传输效率。

接下来的目标就是扣接我的TriC加密组件,实现安全传输通道。

因为有计划今后走Open Source路线,所以现征求一些程序测试人员。

请有兴趣参与的人下载下面这个程序:
本程序对RingSocket的性能/稳定性进行测试:
通过本机Loopback接口在两个RingSocket之间传递1GB的数据;
每个RingSocket有读、写缓存各8MB.

使用方法:
0. 下载,解压,运行,点击Connect;

1. 等待7 - 45秒(视机器硬件配置);
* 如果1.5分钟以上仍然没有停止(CPU忙),或者CPU占用率降到很低,但是没有结果显示,请强行中止,并发帖告知;
* 如果出现任何错误提示,请发帖告知;

2. 请验证显示结果,Sending bytes 和 Receiving bytes的值必须一样,如果不一样,请发帖告知;

3. 如果通过验证,请发帖,包含以下内容:
  a. 显示结果的 Throughput 两行的值;
  b. 机器的CPU个数、型号、频率;
  c. 机器的内存大小、频率(是否是双通道也很重要);

* 下载 *


本程序对机器的总线和内存带宽很敏感,如果希望测试自己机器这方面性能的,也可以运行一下这个程序。

下面是最高和最低分记录: ^_^

最高分: 155MB/sec [AMD Athlon64 3000+, 1G DDR400x2, Bus 2.0GHz]
所有者: scegg

最低分: 28MB/sec [AMD Turion 64 MT-28 800MHz(PS), 512MB DDR333 (共享显存), Bus 200MHz]
所有者: 粘土火星


另外,可以作为参考的是:
2 * Intel Xeon 2.8GHz HT, 1G DDR 400, Bus 400MHz
得分是.... 75MB/sec
这就再次证明了程序对机器的总线和内存带宽的依赖程度... Prz
分享 转发
飛べない翼に、意味はあるんでしょうか?
TOP

回复:程序求测,对编程不感兴趣的就不用进了。

* Recv Proc: (0) Receive Done: 1073741824
* Send Proc: (0) Send Done: 1073741824

Mobile AMD Turion 64 MT-28, 1600 MHz 1个(爆)
480M内存DDR333单通道……
AJI,舰狗
TOP

回复:程序求测,对编程不感兴趣的就不用进了。

er... Throughput 才是我需要的...
飛べない翼に、意味はあるんでしょうか?
TOP

回复:程序求测,对编程不感兴趣的就不用进了。

Send那个是60.016M/s  Recv是59.852M/s
AJI,舰狗
TOP

回复:程序求测,对编程不感兴趣的就不用进了。

哦,好的,谢谢。
飛べない翼に、意味はあるんでしょうか?
TOP

回复:程序求测,对编程不感兴趣的就不用进了。

顺带……改写一下最低记录吧…………

在下用省电模式=v=b  CPU 半速800Mhz运行结果是28M/s =v=b
AJI,舰狗
TOP

回复:程序求测,对编程不感兴趣的就不用进了。

试试不借助winsock2,直接跟驱动通信,据说这样效率还能再高一点
TOP

回复:程序求测,对编程不感兴趣的就不用进了。

以下引用LOVEHINA-AVC在2006-6-5 14:20:43的发言:
试试不借助winsock2,直接跟驱动通信,据说这样效率还能再高一点


那就不是500行程序能够解决的了....况且有些特性(比如Overlapped IO)离了Winsock2的操作系统内部接口,实现起来非常麻烦....
飛べない翼に、意味はあるんでしょうか?
TOP

回复:程序求测,对编程不感兴趣的就不用进了。

你可以通过绑定完成端口来实现高效IO呀,这点并不需要winsock2
TOP

回复:程序求测,对编程不感兴趣的就不用进了。

但是因为我的设计目标是对程序控制反应要和对Socket事件反应同样灵活,因此我采用了WaitForMultipleObjects方式,通过两方的Event来激活线程的响应。

不用WinSock2提供的功能,那就只有自己写驱动到事件的翻译过程了....


我觉得还是问题不能搞得太深入化,不用现成的钢筋混凝土模块的话...高楼大厦是盖不起来的...
飛べない翼に、意味はあるんでしょうか?
TOP