writetest.txt
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.  * writetest --
  3.  *
  4.  * $Id: writetest.txt,v 10.3 1999/11/19 17:21:06 bostic Exp $
  5.  */
  6. #include <sys/types.h>
  7. #include <errno.h>
  8. #include <fcntl.h>
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <string.h>
  12. #include <time.h>
  13. #include <unistd.h>
  14. void usage __P((void));
  15. int
  16. main(argc, argv)
  17. int argc;
  18. char *argv[];
  19. {
  20. struct timeval start_time, end_time;
  21. long usecs;
  22. int bytes, ch, cnt, fd, ops;
  23. char *fname, buf[100 * 1024];
  24. bytes = 256;
  25. fname = "testfile";
  26. ops = 1000;
  27. while ((ch = getopt(argc, argv, "b:f:o:")) != EOF)
  28. switch (ch) {
  29. case 'b':
  30. if ((bytes = atoi(optarg)) > sizeof(buf)) {
  31. fprintf(stderr,
  32.     "max -b option %dn", sizeof(buf));
  33. exit (1);
  34. }
  35. break;
  36. case 'f':
  37. fname = optarg;
  38. break;
  39. case 'o':
  40. if ((ops = atoi(optarg)) <= 0) {
  41. fprintf(stderr, "illegal -o option valuen");
  42. exit (1);
  43. }
  44. break;
  45. case '?':
  46. default:
  47. usage();
  48. }
  49. argc -= optind;
  50. argv += optind;
  51. (void)unlink(fname);
  52. if ((fd = open(fname, O_RDWR | O_CREAT, 0666)) == -1) {
  53. perror(fname);
  54. exit (1);
  55. }
  56. memset(buf, 0, bytes);
  57. printf("running: %d opsn", ops);
  58. (void)gettimeofday(&start_time, NULL);
  59. for (cnt = 0; cnt < ops; ++cnt) {
  60. if (write(fd, buf, bytes) != bytes) {
  61. fprintf(stderr, "write: %sn", strerror(errno));
  62. exit (1);
  63. }
  64. if (lseek(fd, (off_t)0, SEEK_SET) == -1) {
  65. fprintf(stderr, "lseek: %sn", strerror(errno));
  66. exit (1);
  67. }
  68. if (fsync(fd) != 0) {
  69. fprintf(stderr, "fsync: %sn", strerror(errno));
  70. exit (1);
  71. }
  72. }
  73. (void)gettimeofday(&end_time, NULL);
  74. usecs = (end_time.tv_sec - start_time.tv_sec) * 1000000 +
  75.     end_time.tv_usec - start_time.tv_usec;
  76. printf("Elapsed time: %ld.%06ld secondsn",
  77.     usecs / 1000000, usecs % 1000000);
  78. printf("%d ops: %7.2f ops per secondn",
  79.     ops, (float)1000000 * ops/usecs);
  80. (void)unlink(fname);
  81. exit (0);
  82. }
  83. void
  84. usage()
  85. {
  86. (void)fprintf(stderr,
  87.     "usage: testfile [-b bytes] [-f file] [-o ops]n");
  88. exit(1);
  89. }