import std.stdio;
import std.perf;
/++
+ - 配列のスライシング
+ forによる繰り返しより、かなり高速
+/
void main()
{
// erapsed time = 0(secs)/ 26(millis)/25578(micros)
// erapsed time = 0(secs)/ 7(millis)/7519(micros)
uint[81] s =
[
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,
];
uint[81] d;
auto sw = new PerformanceCounter;
// 測定スタート
sw.start();
for (int i; i < 100000; i++)
{
// do something
d[0 .. s.length] = s[0 .. $];
}
// 測定ストップ
sw.stop();
writefln("erapsed time = %d(secs)/ %d(millis)/%d(micros)",
sw.seconds(), sw.milliseconds(), sw.microseconds());
// 測定スタート
sw.start();
for (int i; i < 100000; i++)
{
// do something
for (int j; j < 81; j++)
d[j] = s[j];
}
// 測定ストップ
sw.stop();
writefln("erapsed time = %d(secs)/ %d(millis)/%d(micros)",
sw.seconds(), sw.milliseconds(), sw.microseconds());
}
CmltcG9ydCBzdGQuc3RkaW87CmltcG9ydCBzdGQucGVyZjsKCi8rKwogKyAtIOmFjeWIl+OBruOCueODqeOCpOOCt+ODs+OCsAogKyBmb3LjgavjgojjgovnubDjgorov5TjgZfjgojjgorjgIHjgYvjgarjgorpq5jpgJ8KICsvCgp2b2lkIG1haW4oKQp7Ci8vIGVyYXBzZWQgdGltZSA9IDAoc2VjcykvIDI2KG1pbGxpcykvMjU1NzgobWljcm9zKQovLyBlcmFwc2VkIHRpbWUgPSAwKHNlY3MpLyA3KG1pbGxpcykvNzUxOShtaWNyb3MpCgoJdWludFs4MV0gcyA9CglbCgkJMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwKCQkyLCA0LCA2LCA4LDEwLDEyLDE0LDE2LDE4LAoJCTMsIDYsIDksMTIsMTUsMTgsMjEsMjQsMjcsCgkJNCwgOCwxMiwxNiwyMCwyNCwyOCwzMiwzNiwKCQk1LDEwLDE1LDIwLDI1LDMwLDM1LDQwLDQ1LAoJCTYsMTIsMTgsMjQsMzAsMzYsNDIsNDgsNTQsCgkJNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw2MywKCQk4LDE2LDI0LDMyLDQwLDQ4LDU2LDY0LDcyLAoJCTksMTgsMjcsMzYsNDUsNTQsNjMsNzIsODEsCgldOwoJdWludFs4MV0gZDsKCglhdXRvIHN3ID0gbmV3IFBlcmZvcm1hbmNlQ291bnRlcjsKCgkvLyDmuKzlrprjgrnjgr/jg7zjg4gKCXN3LnN0YXJ0KCk7Cglmb3IgKGludCBpOyBpIDwgMTAwMDAwOyBpKyspCgl7CgkJLy8gZG8gc29tZXRoaW5nCgkJZFswIC4uIHMubGVuZ3RoXSA9IHNbMCAuLiAkXTsKCX0KCS8vIOa4rOWumuOCueODiOODg+ODlwoJc3cuc3RvcCgpOwoJd3JpdGVmbG4oImVyYXBzZWQgdGltZSA9ICVkKHNlY3MpLyAlZChtaWxsaXMpLyVkKG1pY3JvcykiLAoJCXN3LnNlY29uZHMoKSwgc3cubWlsbGlzZWNvbmRzKCksIHN3Lm1pY3Jvc2Vjb25kcygpKTsKCgkvLyDmuKzlrprjgrnjgr/jg7zjg4gKCXN3LnN0YXJ0KCk7Cglmb3IgKGludCBpOyBpIDwgMTAwMDAwOyBpKyspCgl7CgkJLy8gZG8gc29tZXRoaW5nCgkJZm9yIChpbnQgajsgaiA8IDgxOyBqKyspCgkJCWRbal0gPSBzW2pdOwoJfQoJLy8g5ris5a6a44K544OI44OD44OXCglzdy5zdG9wKCk7Cgl3cml0ZWZsbigiZXJhcHNlZCB0aW1lID0gJWQoc2VjcykvICVkKG1pbGxpcykvJWQobWljcm9zKSIsCgkJc3cuc2Vjb25kcygpLCBzdy5taWxsaXNlY29uZHMoKSwgc3cubWljcm9zZWNvbmRzKCkpOwoKfQo=