2014-10-21 2 views
0

Что происходит быстрее в linux: pipe или fifo? Теоретическая труба быстрее, но как я могу проверить это с помощью программы C? Я попытался отправить сообщение между 2-мя пробами, но время от отправки до получающего сообщения все равно 0 безрассудно по длине сообщения.Что происходит быстрее, pipe | fifo

часть кода:

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); 
+1

Постарайтесь выслать 1,000,000 и узнайте, какой быстрее –

+0

Ваши теги сравнивают яблоки с апельсинами. Unix 'pipe' - практическая вещь, а' fifo' - это концепция. Что вы точно сравниваете? – nvoigt

+0

В этой части кода я хочу получить время, используемое с помощью fifo, и у меня есть способ получить время с помощью pipe, это то же самое, но fd is int fd [2], и я начал работать с каналом перед fork. – user3052078

ответ

3

A fifo разделяет ту же реализацию, что и pipe, в Linux, поэтому они одинаково быстры.

Основное отличие в том, как вы их создаете/открываете.

Если вы хотите измерить его, вам нужно будет выполнить измеримую работу. например попробуйте прочитать/записать 100 МБ данных (используйте цикл). Вам также необходимо проверить наличие ошибок, так как измерение того, как быстро это происходит, - это не то, что вы хотите, и вам нужно проверить, что вы действительно прочитали и написали 100 МБ.

0

чтения() пытается прочитать сосчитать байт из файлового дескриптора Fd в буфер, начиная с BUF.

это означает, что если вы останетесь в родительском процессе, вы прочитаете 0 байт и просто продолжите. вы должны уведомить родителя о том, что чтение закончилось, и ожидание на нем. попытайтесь использовать сигналы или опросить файл в родительском процессе и напишите 1 ему после того, как запись будет выполнена

 Смежные вопросы

  • Нет связанных вопросов^_^