mmap_bench.c 791 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * Copyright 2016, Anton Blanchard, Michael Ellerman, IBM Corp.
  3. * Licensed under GPLv2.
  4. */
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <sys/mman.h>
  8. #include <time.h>
  9. #include "utils.h"
  10. #define ITERATIONS 5000000
  11. #define MEMSIZE (128 * 1024 * 1024)
  12. int test_mmap(void)
  13. {
  14. struct timespec ts_start, ts_end;
  15. unsigned long i = ITERATIONS;
  16. clock_gettime(CLOCK_MONOTONIC, &ts_start);
  17. while (i--) {
  18. char *c = mmap(NULL, MEMSIZE, PROT_READ|PROT_WRITE,
  19. MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
  20. FAIL_IF(c == MAP_FAILED);
  21. munmap(c, MEMSIZE);
  22. }
  23. clock_gettime(CLOCK_MONOTONIC, &ts_end);
  24. printf("time = %.6f\n", ts_end.tv_sec - ts_start.tv_sec + (ts_end.tv_nsec - ts_start.tv_nsec) / 1e9);
  25. return 0;
  26. }
  27. int main(void)
  28. {
  29. return test_harness(test_mmap, "mmap_bench");
  30. }