您需要向我们详细介绍硬件和操作系统,以及特定的Java版本。您如何测量此吞吐量?
您是正确的,强制/同步应将数据强制输出到物理介质。
这是副本的原始版本。在Intel Mac上与gcc 4.0一起编译,应该干净。
#include <fcntl.h>#include <sys/types.h>#include <sys/uio.h>#include <stdlib.h>#include <unistd.h>#if defined(DIRTY)# if defined(BUFSIZ)# error "Don't define your own BUFSIZ when DIRTY"# endif# include <stdio.h># define PERROR perror(argv[0])#else# define CLEAN# define PERROR# if ! defined(BUFSIZ)# error "You must define your own BUFSIZ with -DBUFSIZ=<number>"# endif#endifchar * buffer[BUFSIZ]; extern int errno ; int main(int argc, char * argv[]) { int fdi, fdo ; ssize_t len ; if(argc != 3){ PERROR; exit(errno); } if((fdi = open(argv[1],O_RDONLY)) == -1){ PERROR; exit(errno); } if((fdo = open(argv[2], O_WRonLY|O_CREAT)) == -1){ PERROR; exit(errno); } while((len = read(fdi, (void *) buffer, BUFSIZ)) > -1){ if(len == -1){ PERROR; exit(errno); } if(write(fdo, (void*)buffer, len) == -1){ PERROR; exit(errno); } } if(fsync(fdo) ==-1){ PERROR; exit(errno); } if(close(fdo) == -1){ PERROR; exit(errno); } if(close(fdi) == -1){ PERROR; exit(errno); } exit(0);}


