Мерзавец, не Может клонировать repo на окнах

Пожалуйста, не обращайте внимания на совет Джона Скита, касающийся: избегайте паттерна «тест-и-каст», т.е. :

TargetType convertedRandomObject = randomObject as TargetType;
if (convertedRandomObject != null)
{
    // Do stuff with convertedRandomObject
}

Это микрооптимизация, которая не работает. Я выполнил некоторые реальные тесты , и тестирование-и-приведение на самом деле быстрее, чем сравнение-и-ноль-сравнение, и это также безопаснее, потому что у вас нет возможности иметь нулевую ссылку в области видимости за пределами if, если приведение не выполнено.

Если вам нужна причина, почему тестирование и приведение происходит быстрее или, по крайней мере, не медленнее, есть простая и сложная причина.

Простой: даже наивные компиляторы объединят две одинаковые операции, такие как тестирование и приведение, в один тест и ветвь. cast-and-null-test может вызвать два теста и ветвь, один для проверки типа и преобразования в null при ошибке, один для самой проверки null. По крайней мере, они оба будут оптимизированы для одного теста и ветвления, поэтому test-and-cast не будет ни медленнее, ни быстрее, чем cast-and-null-test.

Сложный: почему тестирование и приведение происходит быстрее: приведение и проверка на ноль вводят во внешнюю область видимости другую переменную, которую компилятор должен отслеживать для обеспечения жизнеспособности, и он может не иметь возможности оптимизировать эта переменная в зависимости от того, насколько сложен ваш поток управления. И наоборот, test-and-cast представляет новую переменную только в области с разделителями, поэтому компилятор знает, что переменная не работает после выхода из области, и поэтому может лучше оптимизировать распределение регистров.

Поэтому, пожалуйста, ПОЖАЛУЙСТА, пусть этот «бросок-и-ноль-тест лучше, чем тест-бросок» совет DIE. ПОЖАЛУЙСТА. Тестирование и приведение более безопасны и быстрее.

5
задан Chris 23 June 2009 в 22:29
поделиться

1 ответ

Проблема в том, что MSysGit запускает PLink в фоновом режиме, то есть терминал фактически не подключен к входу PLink. Это означает, что вы просто не можете ввести что-либо в PLink.

Вам просто нужно один раз подключиться к серверу с помощью PLink или PuTTY, ответить Да и с этого момента вы больше не будут спрашивать.

7
ответ дан 14 December 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: