网站建设战略合作方案,虾米播播支持wordpress吗,惠州做网站电话,网站怎么描述From: http://www.cppblog.com/whoami17/archive/2009/05/10/82452.html 今天突然想比较一下 write() 和 writev() 的性能#xff0c; 网上google了半天#xff0c; 竟然没有发现一点有关的数据信息#xff0c; 自己就测试了一下。 平台如下#xff1a; CentOS 5.2 Lin…From: http://www.cppblog.com/whoami17/archive/2009/05/10/82452.html 今天突然想比较一下 write() 和 writev() 的性能 网上google了半天 竟然没有发现一点有关的数据信息 自己就测试了一下。 平台如下 CentOS 5.2 Linux kernel 2.6.18-92.e15 CPU: Intel(R) Pentium(R) 4 CPU 2.40GHz Disk: 7200 rpm 测试的想法是: 对于writev 如果有10 个buffer 并且buffer的大小是1kb, 那么我就先依次调用write() 10 次 每次写1KB 到同一个文件 记录下时间 然后记录下用writev的时间。 最后 以write为baseline, 计算writev所占的% 如果%越小 证明writev() 的性能就越好。 做了两组测试 第一组 固定buffer 的个数10 100 1000 依次增加buffer的大小 从1KB -- 1024KB 数据如下 基准线为相应write的数据 例如 10 个buffer 每个buffer size 是1KB。 write() 耗时0.092 ms, writev() 耗时0.098 ms, 图中的数据即为 1.067 (write_v10, 1KB) 图一 第二组 固定buffer大小1KB 2KB 8KB 依次增加buffer的数目 从 200 -- 8000, 数据如下 基准线为相应write的数据图二第一组数据显示1. 随着buffer的增大 64KB writev的性能开始跟write持平 2. 如果buffer的个数过小 writev的性能是低于write的。 从图一可以看到 在buffer size 小于1024KB 时 writev 使用10 个buffer的性能要低于100 和1000。第二组数据显示 1. 当保持buffer size一定情况下 增加buffer的个数 2000 writev 的性能稳定在70%左右; 2. 增加buffer size, 将会降低writev()的性能。 当buffer为8KB 时 writev 所用时间基本上都为相应write时间的80% 性能的提高明显不如1KB 和 2KB。3. 当buffer的个数超过2000 并且buffer size 大于2KB writev性能将远不如write。结论writev() 应使用在small write intensive 的workload中 buffer size 应控制在 2KB 以下 同时buffer的数目不要超过IOV_MAX, 否则 writev() 并不会带来性能的提高。 现在 所要研究的问题是对于不同的workload 如何快速的确定writev中buffer的个数和大小 从而达到较好performance。