Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. enum {
  7. MAX_HWM = 0x800000,
  8. };
  9.  
  10. int computeNewHighWaterMark(unsigned int n) {
  11. if (n >= MAX_HWM) {
  12. n = MAX_HWM;
  13. } else {
  14. n--;
  15. n |= n >> 1;
  16. n |= n >> 2;
  17. n |= n >> 4;
  18. n |= n >> 8;
  19. n |= n >> 16;
  20. n++;
  21. }
  22.  
  23. return n;
  24. }
  25.  
  26. int* getResults(void) {
  27. int* results = malloc(sizeof(*results) * 100);
  28.  
  29. for (int i=0; i<100; i++) {
  30. results[i] = computeNewHighWaterMark((unsigned) i);
  31. }
  32.  
  33. return results;
  34. }
  35.  
  36. int main(void) {
  37. int** stored = malloc(sizeof(int*) * 100);
  38. struct timespec tstart={0,0}, tend={0,0};
  39.  
  40. timespec_get(&tstart, TIME_UTC);
  41. for (int i=0; i<100; i++) {
  42. stored[i] = getResults();
  43. }
  44. timespec_get(&tend, TIME_UTC);
  45.  
  46. long ns = tend.tv_nsec - tstart.tv_nsec;
  47. double ms = ((double) ns) / 1000000;
  48. printf("Time: %fms Raw ns: %ld\n\nResults:\n", ms, ns);
  49.  
  50. // Print 1st entry from results
  51. int* entries = stored[0];
  52. for (int i=0; i<100; i++) {
  53. int entry = entries[i];
  54. printf("f(%d): %d\n", i, entry);
  55. }
  56.  
  57. for (int i=0; i<100; i++) {
  58. free(stored[i]);
  59. }
  60.  
  61. free(stored);
  62.  
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement