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

MySQL数据库

开发平台:

Visual C++

  1. /* ==== bench_read.c ============================================================
  2.  * Copyright (c) 1993 by Chris Provenzano, proven@athena.mit.edu
  3.  *
  4.  * Description : Benchmark reads of /dev/null. Gives a good aprox. of
  5.  *  syscall times.
  6.  *
  7.  *  1.00 93/08/01 proven
  8.  *      -Started coding this file.
  9.  */
  10. #include <sys/types.h>
  11. #include <sys/time.h>
  12. #include <stdio.h>
  13. #include <fcntl.h>
  14. #include <errno.h>
  15. #define OK 0
  16. #define NOTOK -1
  17. /* ==========================================================================
  18.  * usage();
  19.  */
  20. void usage(void)
  21. {
  22. printf("getopt [-d?] [-c count] [-s size]n");
  23.     errno = 0;
  24. }
  25. main(int argc, char **argv)
  26. {
  27. struct timeval starttime, endtime;
  28. int count = 1000000;
  29. int debug = 0;
  30. int size = 1;
  31. int fd;
  32. int i;
  33. char word[8192];
  34.     /* Getopt variables. */
  35.     extern int optind, opterr;
  36.     extern char *optarg;
  37. while ((word[0] = getopt(argc, argv, "s:c:d?")) != (char)EOF) {
  38. switch (word[0]) {
  39. case 'd':
  40. debug++;
  41. break;
  42. case 'c':
  43. count = atoi(optarg);
  44. break;
  45. case 's':
  46. if ((size = atoi(optarg)) > 8192) {
  47. size = 8192;
  48. }
  49. break;
  50. case '?':
  51. usage();
  52. return(OK);
  53. default:
  54. usage();
  55. return(NOTOK);
  56. }
  57. }
  58. if ((fd = open("/netbsd", O_RDONLY)) < OK) {
  59. printf("Error: openn");
  60. exit(0);
  61. }
  62. if (gettimeofday(&starttime, NULL)) {
  63. printf("Error: gettimeofdayn");
  64. exit(0);
  65. }
  66. for (i = 0; i < count; i++) {
  67. if (read(fd, word, size) < OK) {
  68. printf("Error: readn");
  69. exit(0);
  70. }
  71. }
  72. if (gettimeofday(&endtime, NULL)) {
  73. printf("Error: gettimeofdayn");
  74. exit(0);
  75. }
  76. printf("%d reads of /netbsd took %d usecs.n", count, 
  77. (endtime.tv_sec - starttime.tv_sec) * 1000000 +
  78. (endtime.tv_usec - starttime.tv_usec));
  79. }