Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. #include <sys/time.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <pthread.h>
  5.  
  6. #define INPUT_NUM 500000000
  7.  
  8. struct timeval t1, t2, rate1, rate2;
  9.  
  10. void* thread_func(void* parameter){
  11.  
  12. unsigned long *p = (unsigned long*)parameter;
  13.  
  14. unsigned long rate;
  15. float elap_ms;
  16.  
  17. gettimeofday(&rate1, NULL);
  18.  
  19. while(*p < INPUT_NUM){
  20. gettimeofday(&rate2, NULL);
  21.  
  22. elap_ms = (rate2.tv_sec - rate1.tv_sec) *1000 + (rate2.tv_usec - rate1.tv_usec) / 1000;
  23.  
  24. rate = 1000 * *p / elap_ms;
  25.  
  26.  
  27. printf("\r%d %% rate: %lu Hz", 100 * *p/INPUT_NUM, rate );
  28. }
  29.  
  30.  
  31. }
  32.  
  33. int main(){
  34.  
  35. pthread_t thread_handle;
  36.  
  37. unsigned long i;
  38. double sum = 0;
  39.  
  40. //for betty declare variables outside 'for'
  41. //input generator
  42. printf("allocating...\n");
  43. int16_t* input = (int16_t *) malloc(sizeof(int16_t)*INPUT_NUM);
  44.  
  45. if (input==NULL) exit(1);
  46.  
  47. printf("generating...\n");
  48.  
  49.  
  50. for (i =0; i < INPUT_NUM; i++) {
  51. input[i]=rand() % 100;
  52. sum +=input[i];
  53. }
  54.  
  55. printf("Input avg: %f\n",sum/INPUT_NUM);
  56.  
  57. //process data
  58. printf("processing..\n");
  59.  
  60. int ret = pthread_create(&thread_handle, 0, thread_func, &i );
  61.  
  62. if( ret != 0){
  63.  
  64. printf("Thread not created\n");
  65. return 1;
  66.  
  67. }
  68. ///// main process block /////
  69. gettimeofday(&t1, NULL);
  70.  
  71. for (i = 0; i < INPUT_NUM ; i++) {
  72. input[i] *= 0.33f;
  73. }
  74.  
  75. gettimeofday(&t2, NULL);
  76. ///////////////////////////////
  77.  
  78. pthread_join(thread_handle, 0);
  79.  
  80.  
  81. printf("\r100 %\n");
  82.  
  83. sum = 0;
  84.  
  85. for(i=0; i < INPUT_NUM; i++){
  86. sum+=input[i];
  87. }
  88. printf("Output avg: %f\n", sum/INPUT_NUM);
  89.  
  90.  
  91. float elapsed_ms = (t2.tv_sec - t1.tv_sec) *1000 + (t2.tv_usec - t1.tv_usec) / 1000;
  92.  
  93. printf("%f ms\n", elapsed_ms);
  94.  
  95. int elapsed_s = elapsed_ms / 1000;
  96.  
  97. int elapsed_min = elapsed_s / 60;
  98.  
  99. elapsed_s -= elapsed_min*60;
  100. elapsed_ms -= elapsed_s*1000;
  101.  
  102.  
  103. printf("%d:%d:%f\n",elapsed_min, elapsed_s, elapsed_ms);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement