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
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());
// 測定スタート
sw.start();
for (int i; i < 100000; i++)
{
// do something
d[0 .. $] = s[0 .. $];
}
// 測定ストップ
sw.stop();
writefln("erapsed time = %d(secs)/ %d(millis)/%d(micros)",
sw.seconds(), sw.milliseconds(), sw.microseconds());
for (int i; i < 81; i++)
writef("%d,", d[i]);
}
CgppbXBvcnQgc3RkLnN0ZGlvOwppbXBvcnQgc3RkLnBlcmY7CgovKysKKyAtIOmFjeWIl+OBruOCueODqeOCpOOCt+ODs+OCsAorIGZvcuOBq+OCiOOCi+e5sOOCiui/lOOBl+OCiOOCiuOAgeOBi+OBquOCiumrmOmAnworLwoKdm9pZCBtYWluKCkKewovLyBlcmFwc2VkIHRpbWUgPSAwKHNlY3MpLyAyNihtaWxsaXMpLzI1NTc4KG1pY3JvcykKLy8gZXJhcHNlZCB0aW1lID0gMChzZWNzKS8gNyhtaWxsaXMpLzc1MTkobWljcm9zKQoKCXVpbnRbODFdIHMgPQoJWwoJCTEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksCgkJMiwgNCwgNiwgOCwxMCwxMiwxNCwxNiwxOCwKCQkzLCA2LCA5LDEyLDE1LDE4LDIxLDI0LDI3LAoJCTQsIDgsMTIsMTYsMjAsMjQsMjgsMzIsMzYsCgkJNSwxMCwxNSwyMCwyNSwzMCwzNSw0MCw0NSwKCQk2LDEyLDE4LDI0LDMwLDM2LDQyLDQ4LDU0LAoJCTcsMTQsMjEsMjgsMzUsNDIsNDksNTYsNjMsCgkJOCwxNiwyNCwzMiw0MCw0OCw1Niw2NCw3MiwKCQk5LDE4LDI3LDM2LDQ1LDU0LDYzLDcyLDgxLAoJXTsKCXVpbnRbODFdIGQ7CgoJYXV0byBzdyA9IG5ldyBQZXJmb3JtYW5jZUNvdW50ZXI7CgoJLy8g5ris5a6a44K544K/44O844OICglzdy5zdGFydCgpOwoJZm9yIChpbnQgaTsgaSA8IDEwMDAwMDsgaSsrKQoJewoJCS8vIGRvIHNvbWV0aGluZwoJCWZvciAoaW50IGo7IGogPCA4MTsgaisrKQoJCQlkW2pdID0gc1tqXTsKCX0KCS8vIOa4rOWumuOCueODiOODg+ODlwoJc3cuc3RvcCgpOwoJd3JpdGVmbG4oImVyYXBzZWQgdGltZSA9ICVkKHNlY3MpLyAlZChtaWxsaXMpLyVkKG1pY3JvcykiLAoJCXN3LnNlY29uZHMoKSwgc3cubWlsbGlzZWNvbmRzKCksIHN3Lm1pY3Jvc2Vjb25kcygpKTsKCgkvLyDmuKzlrprjgrnjgr/jg7zjg4gKCXN3LnN0YXJ0KCk7Cglmb3IgKGludCBpOyBpIDwgMTAwMDAwOyBpKyspCgl7CgkJLy8gZG8gc29tZXRoaW5nCgkJZFswIC4uICRdID0gc1swIC4uICRdOwoJfQoJLy8g5ris5a6a44K544OI44OD44OXCglzdy5zdG9wKCk7Cgl3cml0ZWZsbigiZXJhcHNlZCB0aW1lID0gJWQoc2VjcykvICVkKG1pbGxpcykvJWQobWljcm9zKSIsCgkJc3cuc2Vjb25kcygpLCBzdy5taWxsaXNlY29uZHMoKSwgc3cubWljcm9zZWNvbmRzKCkpOwoJZm9yIChpbnQgaTsgaSA8IDgxOyBpKyspCgkJd3JpdGVmKCIlZCwiLCBkW2ldKTsKfQo=
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,