linux中什么更快:pipe还是fifo?理论管道更快,但我如何用C程序来检查呢?
我试过在两个进程之间发送一条消息,但从发送到接收消息的时间仍然是0(按消息长度计算)。
部分代码:
struct timeval start,end;
char mesaj[100000]="";
for(i=0;i<99999;i++)
strcat(mesaj,"d");
gettimeofday(&start,NULL);
if(fork()==0)
{
write(fd,mesaj,strlen(mesaj));
exit(0);
}
read(fd,mesaj,strlen(mesaj));
gettimeofday(&end,NULL);
long time=(end.tv_usec-start.tv_usec)/1000 + (end.tv_sce-start.tv_sec)*1000;
printf("Fifo time &lu\n",time);
最佳答案
Afifo与linux中的Apipe共享相同的实现,因此它们同样快速。
两者的主要区别在于如何创建/打开它们。
如果你想测量它,你需要做一些可以测量的工作。例如,尝试读/写100MB的数据(使用循环)。你还需要检查错误,因为衡量失败的速度不是你想要的,你需要检查你是否真的读写了100MB。
关于c - 什么更快,pipe | fifo,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26486015/