什么导致这些c write()调用的巨大性能差异?

时间:2011-09-21 20:52:39

标签: c gcc dd

有人看到这两行之间的区别吗?

1) ret = write( fd_out, local_bugger, bytes_to_move);

2) nwritten = write (fd, buf + total_written, size - total_written);

显然,不是命名约定。

具体来说,一个是通过网络写入比另一个快4倍。

寻找逻辑,旗帜等

感谢

2 个答案:

答案 0 :(得分:6)

所有这些的价值/类型是什么?现在这个问题无法回答......选项2)最终写入4倍的数据吗?这两个手柄的fopens有哪些标志选项?等...

现在我猜这是因为火星在木星上是耸人听闻的,月亮是隆起的打蜡,导致希格斯玻色子弄乱以太网电缆中的夸克。

答案 1 :(得分:0)

这里有两件事可以发挥作用:

  1. 您正在撰写的块的大小。小块会产生更多的开销。但这不太可能造成很大的差异,除非你写的不到16个字节左右。
  2. 您要写入的文件描述符的详细信息。它有多少缓冲?它是通过文件系统(NFS还是CIFS)?它甚至在同一个网络上出现了吗?
  3. 简而言之,正如Marc B回答的那样:信息不足。