我想知道两者的区别
char *text = (char *)malloc(4096);
memset(text, 'a', 4096);
int fd = open(filepath, O_RDWR | O_CREAT | O_DIRECT);
for(int i=0; i<1000; i++) {
write(fd, (void *)text, 4096);
fsync(fd);
}
close (fd);
和
char *text = (char *)malloc(4096);
memset(text, 'a', 4096);
int fd = open(filepath, O_RDWR | O_CREAT | O_DIRECT | O_SYNC); //<----Difference
for(int i=0; i<1000; i++) {
write(fd, (void *)text, 4096);
// fsync(fd); <--------------------------------------------------Difference
}
close (fd);
上面代码的性能比下面的要慢得多。