fork(1) download
  1. #include <stdio.h>
  2. #include <sys/time.h>
  3.  
  4. int f(int d)
  5. {
  6. int k;
  7. int n; // 桁数
  8. int zero; // ゼロ個数
  9. int res; // 結果
  10.  
  11. // 桁数数えなど
  12. k = 1;
  13. for (n = 0; d > k; n++) {
  14. k *= 10;
  15. }
  16. // 0以外をresにいれながら0を数える
  17. res = zero = 0;
  18. for (; n > 0; n--) {
  19. k /= 10;
  20. if (d >= k) {
  21. res = res * 10 + d / k;
  22. }
  23. else {
  24. zero++;
  25. }
  26. d %= k;
  27. }
  28.  
  29. // 0を付け加える
  30. for (; zero > 0; zero--) {
  31. res *= 10;
  32. }
  33.  
  34. // 終了
  35. return res;
  36.  
  37. }
  38.  
  39. int main()
  40. {
  41. int v = 20010307; // 値
  42. //int v = 1020304050; // 値
  43. int ex = 100000; // 実行回数
  44. int count = 222; // 計測回数
  45. int res;
  46. int i, j;
  47. struct timeval s, e;
  48. double sum=0; // 結果
  49.  
  50. printf("f(%d);を%d回実行する時間の計測を%d回し、平均時間を出す\n", v, ex, count);
  51. sum = 0.0;
  52. for (j = 0; j < count; j++) {
  53. gettimeofday(&s, NULL);
  54. for (i = 0; i < ex; i++) {
  55. res = f(v);
  56. }
  57. gettimeofday(&e, NULL);
  58. sum += (e.tv_sec - s.tv_sec) + (e.tv_usec - s.tv_usec) / 1000000.0;
  59. }
  60. printf("result = %d, time = %fms\n", res, 1000.0 * sum / ((double)count));
  61. return 0;
  62. }
Success #stdin #stdout 0s 2248KB
stdin
Standard input is empty
stdout
f(20010307);を100000回実行する時間の計測を222回し、平均時間を出す
result = 21370000, time = 0.000180ms