fork download
  1.  
  2.  
  3. import std.stdio;
  4. import std.perf;
  5.  
  6. /++
  7. + - 配列のスライシング
  8. + forによる繰り返しより、かなり高速
  9. +/
  10.  
  11. void main()
  12. {
  13. // erapsed time = 0(secs)/ 26(millis)/25578(micros)
  14. // erapsed time = 0(secs)/ 7(millis)/7519(micros)
  15.  
  16. uint[81] s =
  17. [
  18. 1, 2, 3, 4, 5, 6, 7, 8, 9,
  19. 2, 4, 6, 8,10,12,14,16,18,
  20. 3, 6, 9,12,15,18,21,24,27,
  21. 4, 8,12,16,20,24,28,32,36,
  22. 5,10,15,20,25,30,35,40,45,
  23. 6,12,18,24,30,36,42,48,54,
  24. 7,14,21,28,35,42,49,56,63,
  25. 8,16,24,32,40,48,56,64,72,
  26. 9,18,27,36,45,54,63,72,81,
  27. ];
  28. uint[81] d;
  29.  
  30. auto sw = new PerformanceCounter;
  31.  
  32. // 測定スタート
  33. sw.start();
  34. for (int i; i < 100000; i++)
  35. {
  36. // do something
  37. for (int j; j < 81; j++)
  38. d[j] = s[j];
  39. }
  40. // 測定ストップ
  41. sw.stop();
  42. writefln("erapsed time = %d(secs)/ %d(millis)/%d(micros)",
  43. sw.seconds(), sw.milliseconds(), sw.microseconds());
  44.  
  45. // 測定スタート
  46. sw.start();
  47. for (int i; i < 100000; i++)
  48. {
  49. // do something
  50. d[0 .. $] = s[0 .. $];
  51. }
  52. // 測定ストップ
  53. sw.stop();
  54. writefln("erapsed time = %d(secs)/ %d(millis)/%d(micros)",
  55. sw.seconds(), sw.milliseconds(), sw.microseconds());
  56. for (int i; i < 81; i++)
  57. writef("%d,", d[i]);
  58. }
  59.  
Success #stdin #stdout 0.04s 2120KB
stdin
Standard input is empty
stdout
erapsed time = 0(secs)/ 25(millis)/25580(micros)
erapsed time = 0(secs)/ 8(millis)/7521(micros)
1,2,3,4,5,6,7,8,9,2,4,6,8,10,12,14,16,18,3,6,9,12,15,18,21,24,27,4,8,12,16,20,24,28,32,36,5,10,15,20,25,30,35,40,45,6,12,18,24,30,36,42,48,54,7,14,21,28,35,42,49,56,63,8,16,24,32,40,48,56,64,72,9,18,27,36,45,54,63,72,81,