fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <limits.h>
  4. #include <time.h>
  5.  
  6. double sec(){
  7. struct timespec t;
  8. clock_gettime(CLOCK_MONOTONIC, &t);
  9. return t.tv_sec + 1e-9 * t.tv_nsec;
  10. }
  11.  
  12. int find_maximum(int *values, size_t n){
  13. int maximum = INT_MIN;
  14. for (size_t i = 0; i < n; i++){
  15. maximum = values[i] > maximum ? values[i] : maximum;
  16. }
  17. return maximum;
  18. }
  19.  
  20. int main(){
  21. for (int k = 0; k < 10; k++){
  22. size_t n = 13 * 1000 * 1000;
  23.  
  24. size_t n_bytes = n * sizeof(int);
  25. int *values = malloc(n_bytes);
  26.  
  27. for (size_t i = 0; i < n; i++){
  28. values[i] = rand();
  29. }
  30.  
  31. double t = sec();
  32.  
  33. int maximum = find_maximum(values, n);
  34.  
  35. double dt = sec() - t;
  36.  
  37. printf("%f GB/s, maximum value: %i\n", n_bytes * 1e-9 / dt, maximum);
  38.  
  39. free(values);
  40. }
  41.  
  42. return 0;
  43. }
  44.  
Success #stdin #stdout 1.48s 52224KB
stdin
Standard input is empty
stdout
4.760517 GB/s, maximum value: 2147483025
4.838556 GB/s, maximum value: 2147483611
4.430803 GB/s, maximum value: 2147483385
4.944641 GB/s, maximum value: 2147483267
4.937876 GB/s, maximum value: 2147483514
4.955096 GB/s, maximum value: 2147483526
3.928283 GB/s, maximum value: 2147483204
4.763301 GB/s, maximum value: 2147483417
4.938250 GB/s, maximum value: 2147483344
4.959307 GB/s, maximum value: 2147483606