【发布时间】:2018-03-24 06:55:04
【问题描述】:
只是想知道,在 linux 和 C/C++ 上,将相同数据写入两个文件的最有效方法是什么。
例如,这是最简单的方法。
while(1) {
... getting data from somewhere ....
write(fd1, data, datalen);
write(fd2, data, datalen);
}
但是,缺点是内核需要复制两次data,即使数据相同。
有什么想法吗?
【问题讨论】:
-
没有 C/C++。选择您正在使用的一种语言。
-
听起来像premature optimization。您是否有任何证据证明这是您代码中的相关瓶颈?我不这么认为。答案很大程度上取决于操作系统、文件系统及其内部工作原理,只要坚持显而易见的解决方案即可。旁注:你可能会在 C++ 中做不同的事情,所以不要双标记语言......
-
@yumoji,你为什么还要复制数据写入?除了看起来像 Felix 提到的过早优化之外,它也确实闻起来像 X/Y problem。
-
只写入一个文件。完成后将其复制到第二个。
-
如果需要在两个不同的位置写入数据,内核如何不写入数据两次?