- 论坛徽章:
- 0
|
读写文件不是效率很低的嘛,那么数据库为何效率高呢
DIRECT-IO如果自己不buffer一定比普通IO慢。
数据库自己要BUFFER。
它也用系统调用read, write, open, close等,只是不用OS的buffer.
- //一个简单DIRECT-IO例子 (linux i386)。 JOHN SEEKER
- #include <stdio.h>;
- #include <sys/types.h>;
- #include <sys/stat.h>;
- #include <asm/fcntl.h>;
- #include <unistd.h>;
- #define _XOPEN_SOURCE 600
- #include <stdlib.h>;
- //int posix_memalign(void **memptr, size_t alignment, size_t size);
-
- //#include <fcntl.h>;
- char buf[4096] = "123456kasf dklasfkasfkldkladsfklafskldsfkl";
- char buf1[256];
- main()
- {
- int fd;
- int i, r;
- char *bp;
- r = posix_memalign(&bp, 512, 4096*8);
- printf("r = %d\n", r);
- memcpy(bp, buf, 4096);
-
- fd = open("data", O_CREAT | O_RDWR | O_TRUNC | O_DIRECT, 0644);
-
- printf("fd = %d\n", fd);
-
- r = write(fd, bp, 4096);
- printf("%d bytes written.\n", r);
- close(fd);
- }
复制代码 |
|