benchHash.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * Hash benchmark module
  3. * Part of the xxHash project
  4. * Copyright (C) 2019-2020 Yann Collet
  5. *
  6. * GPL v2 License
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation; either version 2 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License along
  19. * with this program; if not, write to the Free Software Foundation, Inc.,
  20. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  21. *
  22. * You can contact the author at:
  23. * - xxHash homepage: https://www.xxhash.com
  24. * - xxHash source repository: https://github.com/Cyan4973/xxHash
  25. */
  26. #ifndef BENCH_HASH_H_983426678
  27. #define BENCH_HASH_H_983426678
  28. #if defined (__cplusplus)
  29. extern "C" {
  30. #endif
  31. /* === Dependencies === */
  32. #include "benchfn.h" /* BMK_benchFn_t */
  33. /* === Declarations === */
  34. typedef enum { BMK_throughput, BMK_latency } BMK_benchMode;
  35. typedef enum { BMK_fixedSize, /* hash always `size` bytes */
  36. BMK_randomSize, /* hash a random nb of bytes, between 1 and `size` (inclusive) */
  37. } BMK_sizeMode;
  38. /*
  39. * bench_hash():
  40. * Returns speed expressed as nb hashes per second.
  41. * total_time_ms: time spent benchmarking the hash function with given parameters
  42. * iter_time_ms: time spent for one round. If multiple rounds are run,
  43. * bench_hash() will report the speed of best round.
  44. */
  45. double bench_hash(BMK_benchFn_t hashfn,
  46. BMK_benchMode benchMode,
  47. size_t size, BMK_sizeMode sizeMode,
  48. unsigned total_time_ms, unsigned iter_time_ms);
  49. #if defined (__cplusplus)
  50. }
  51. #endif
  52. #endif /* BENCH_HASH_H_983426678 */