bench_fcntl.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]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 flags;
  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, "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 '?':
  46. usage();
  47. return(OK);
  48. default:
  49. usage();
  50. return(NOTOK);
  51. }
  52. }
  53. if ((fd = open("/dev/zero", O_RDONLY)) < OK) {
  54. printf("Error: openn");
  55. exit(0);
  56. }
  57. if (gettimeofday(&starttime, NULL)) {
  58. printf("Error: gettimeofdayn");
  59. exit(0);
  60. }
  61. for (i = 0; i < count; i++) {
  62. if ((flags = fcntl(0, F_GETFL)) < 0) {
  63. perror("fcntl 1st GETFL");
  64. }
  65. }
  66. if (gettimeofday(&endtime, NULL)) {
  67. printf("Error: gettimeofdayn");
  68. exit(0);
  69. }
  70. printf("%d fcntls of /dev/null took %d usecs.n", count, 
  71. (endtime.tv_sec - starttime.tv_sec) * 1000000 +
  72. (endtime.tv_usec - starttime.tv_usec));
  73. }