Pull to refresh
-18
0
Send message
Более того, первый стал работать дольше)
В итоге, и правда всё равно.
Зачем 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
{ }


отрабатывает за 118 109 и 117 323 тиков.
Возьми монетки)
В одной плоскости правда два оборота получается.
Потому что шестерня, которая оборачивается, должна пройти не путь два пи эр, а четыре, так как центр стоит дальше в два раза.
Ну, как я понимаю.
Img

image
А, по ободу. Я читать не умею)
Я думал, что первая — в плоскости x-y, вторая — в x-z. А если обе в одной, то конечно два.
На задачу: один оборот, так как радиусы одинаковы. Монетке сверху надо пройти два пи эр по монетке снизу, что в точности равно её собственному два пи эр, что составляет один оборот.

Ещё проще это понять, представив монеты шестерёнками)
Спутник геостационарный, если менять ракурс — надо искать другой. Я поспрашиваю знакомых астрономов, но ничо не обещаю)
Кинул коммит, проверь, работает ли.
А, вчера не было. Эх, ладно, сообщество быстро)
Ну, в Арче (хз, как в других 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)
Кажись, неподалёку от Токио. Точно узнать не получится, думаю.
Код заменил, благодарю за фиксы)
Я ток «за», но мне не на чем проверить работоспособность команд.
Ну, я решил, что бог с ним… Пофиксил кодом от SleepingLion

Information

Rating
Does not participate
Location
Дятьково, Брянская обл., Россия
Date of birth
Registered
Activity