Зачем DateTime, если есть Stopwatch? Раз.
Два: сделав times константой, получишь повышение производительности по очевидным причинам.
Три: ты меряешь здесь ещё и предсказания выбора, чего делать не надо. В идеале, в тестируемом коде вообще не должно быть if'ов, если они — не часть алгоритма.
На моей машине в MSVS 2015 твой код (переписанный на Stopwatch)
Код
private static void Main()
{
int times = 1000 * 1000 * 100;
A a;
B b = new B();
Stopwatch sw1 = new Stopwatch();
sw1.Start();
for (int i = 0; i < times; i++)
{
a = (A)b;
}
sw1.Stop();
Console.WriteLine(sw1.ElapsedTicks);
Stopwatch sw2 = new Stopwatch();
sw2.Start();
for (int i = 0; i < times; i++)
{
a = b as A;
}
sw2.Stop();
Console.WriteLine(sw2.ElapsedTicks);
}
private class A
{ }
private class B : A
{ }
выдавал 735 187 и 738 557 тиков, мой же —
Код
private static void Main()
{
const int times = 1000 * 1000 * 100 / 16;
A a;
B b = new B();
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < times; i++)
{
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
a = (A)b;
}
sw.Stop();
Console.WriteLine(sw.ElapsedTicks);
Stopwatch sw2 = new Stopwatch();
sw2.Start();
for (int i = 0; i < times; i++)
{
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
a = b as A;
}
sw2.Stop();
Console.WriteLine(sw2.ElapsedTicks);
}
private class A
{ }
private class B : A
{ }
Возьми монетки)
В одной плоскости правда два оборота получается.
Потому что шестерня, которая оборачивается, должна пройти не путь два пи эр, а четыре, так как центр стоит дальше в два раза.
Ну, как я понимаю. Img
На задачу: один оборот, так как радиусы одинаковы. Монетке сверху надо пройти два пи эр по монетке снизу, что в точности равно её собственному два пи эр, что составляет один оборот.
Ещё проще это понять, представив монеты шестерёнками)
Ну, в Арче (хз, как в других linux) есть куча файлов /usr/share/zoneinfo/%Zone%/%SubZone%, которые используются для определения временных настроек. SubZone — это крупный город, по его имени теоретически можно определить примерные координаты юзера.
Кстати, да: автор недавно добавил в PowerShell-скрипт строку
$ts = New-TimeSpan -Hours -2 -Minutes -30 #Number of hours and minutes to add/subtract to the date. Adjust this to offset your system date to around about GMT (I think?)
$now = ((Get-Date -Second 00) + $ts)
В итоге, и правда всё равно.
Два: сделав times константой, получишь повышение производительности по очевидным причинам.
Три: ты меряешь здесь ещё и предсказания выбора, чего делать не надо. В идеале, в тестируемом коде вообще не должно быть if'ов, если они — не часть алгоритма.
На моей машине в MSVS 2015 твой код (переписанный на Stopwatch)
выдавал 735 187 и 738 557 тиков, мой же —
отрабатывает за 118 109 и 117 323 тиков.
В одной плоскости правда два оборота получается.
Потому что шестерня, которая оборачивается, должна пройти не путь два пи эр, а четыре, так как центр стоит дальше в два раза.
Ну, как я понимаю.
Img
Я думал, что первая — в плоскости x-y, вторая — в x-z. А если обе в одной, то конечно два.
Ещё проще это понять, представив монеты шестерёнками)
/usr/share/zoneinfo/%Zone%/%SubZone%
, которые используются для определения временных настроек. SubZone — это крупный город, по его имени теоретически можно определить примерные координаты юзера.