Page 2 of 3

Тормоза после апгрейда на RS5 (1809)

Posted: Tue 09 Oct, 2018 15:34
by 2useven10

Latest post of the previous page:

awson wrote: Tue 09 Oct, 2018 15:03А есть у кого
Есть.
В связи с любовью к WSL, может всё-таки стоит обратить внимание, что в 1809 к WSL можно прикрутить Defender ?
Add: Но расчехлить procmon, конечно, было бы надёжнее.

Тормоза после апгрейда на RS5 (1809)

Posted: Tue 09 Oct, 2018 15:55
by awson
2useven10 wrote: Tue 09 Oct, 2018 15:34 В связи с любовью к WSL, может всё-таки стоит обратить внимание, что в 1809 к WSL можно прикрутить Defender ?
Ммм. Не понял. У меня дефендер вообще выключен, а тормоза — при запуске вообще всего, не обязательно WSL.
И если дефендер при делах, то отчего он становится не- для legacy console?

Тормоза после апгрейда на RS5 (1809)

Posted: Tue 09 Oct, 2018 16:04
by 2useven10
awson wrote: Tue 09 Oct, 2018 15:55 а тормоза — при запуске вообще всего
Ну тогда или ждать, пока тормоза обнаружатся у того кто сможет описать ситуацию более полно,
либо procmon в руки, или ждать следующий апдейт - вдруг счастье придёт само.

Тормоза после апгрейда на RS5 (1809)

Posted: Tue 09 Oct, 2018 18:10
by Yegor
awson wrote: Tue 09 Oct, 2018 15:03 А есть у кого нет никаких пауз, и консоль не legacy?
По умолчанию так у всех :)

Тормоза после апгрейда на RS5 (1809)

Posted: Tue 09 Oct, 2018 19:29
by awson
Тут еще интересно, что тормоза (при переходе на новую консоль) были всегда, просто они были относительно невелики и не вызывали мучений, я это понял только сейчас, попробовав старую консоль, где, как оказалось, тормоза остутствуют полностью.

И только при последнем апгрейде эти тормоза преодолели некий барьер активации, стали вопиющими и заставили обратить на себя внимание.

Если кому-нибудь не влом, попробуйте старую консоль и сравните.

Тормоза после апгрейда на RS5 (1809)

Posted: Tue 09 Oct, 2018 22:09
by Yegor
У меня вообще никаких тормозов нет на ноутбуке 4-х летней давности.

Edit: CPU I7-4710HQ

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 10:28
by awson
Вопрос к тем у кого нет тормозов: а Height в Screen Buffer Size у вас какая? У меня 9999. А у вас, я подозреваю, она маленькая — размера видимой области, поскольку вам скроллинг не нужен.

Тормоза возникают при вызове консольного API `ScrollConsoleScreenBuffer`, он отрабатывает почти секунду, когда пытается отмотать буфер на -1 по вертикали. Это происходит перед запуском чего угодно, видимо для скрытия самого нижнего ряда консоли (где подсказки для кнопок F1-F12) и после выполнения, когда этот ряд снова показывается.

Мне кажется, эта пара телодвижений (скрытие/показ нижнего ряда) тут абсолютно лишние.

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 12:16
by awson
А зачем в `execute_info` нужен `Echo`?

Если я его сразу ставлю в `false` то всё распрекрасно начинает летать и никаких других проблем я не вижу, ни на какие мои use cases его отсутствие не влияет.

Видимо, я не использую что-то для чего оно нужно? Но что?

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 15:23
by DrKnS
Фар использует буферизацию вывода - есть 2d матрица в памяти, куда всё пишется, периодически она флашится в физическую консоль.
Раньше, когда концепции большого буфера не было, и по каким-то причинам надо было прокрутить содержимое экрана вверх, достаточно было у этой матрицы дропнуть строку сверху и добавить снизу.
Сейчас, когда концепция большого буфера есть, это уже не катит: если строку сверху просто дропнуть - она уйдёт в никуда, а должна уйти вверх, за видимую границу окна (в этом как бы вся суть большого буфера).

ScrollConsoleScreenBuffer используется для сдвига невидимой части физического буфера вверх. После этого в образовавшийся промежуток фар пишет вытесняемую из видимой части линию.

Адекватных альтернатив ScrollConsoleScreenBuffer нет.

Если вас раздражает, что кто-то применил там Shlemiel the painter’s algorithm - в windows 10 есть встроенное средство для отправки багрепортов.
Еще есть official Windows Console issues & samples repo - возможно, там ответят быстрее.

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 16:32
by awson
Сразу оговорюсь: разумеется это бага в винде. Но с вероятностью близкой с единице даже если её немедленно и качественно отрепортить (что само по себе требует усилий), её поправят не раньше, чем к следующему релизу. А может быть и никогда.

Мне известен абсолютно вопиющий баг, которому уже годы, он появился во втором релизе десятки, но его не чинят, и, скорее всего, никогда не починят (разве что случайно), потому что он затрагивает не сотню миллионов пользователей, а, скажем, сотню тысяч или меньше.

Так что втыкание костыля имеет таки смысл.

Я сходу не совсем понимаю написанное (устал, разбираться буду как-нибудь потом), поэтому вопрос — а что должно сломаться-то?

Вот я сейчас (с выпиленным `ScrollConsoleScreenBuffer`) в фаре с буфером максимального размера скроллю консоль и построчно и постранично и вверх и вниз и в самое начало и в самый конец и ничего у меня никуда не уходит и не пропадает.

Правда, вот нашел: если в промежутке сделать фуллскрин (Alt-9) и вернуться, то одна строка исчезает.

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 16:46
by awson
Хотя действительно, раз они активны в процитированном гитхабовском репо, то, может быть, и пофиксят к следующему релизу.

По крайней мере, WSL-евская команда один баг, который я им на гитхабе отрепортил, пофиксила к следующему релизу.

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 17:19
by DrKnS
awson wrote: Wed 10 Oct, 2018 16:32поправят не раньше, чем к следующему релизу. А может быть и никогда.
Если не репортить, то точно никогда.
Так что втыкание костыля имеет таки смысл.
Так альтернатив нет. Единственный способ сдвинуть содержимое физического буфера вверх, не используя ScrollConsoleScreenBuffer - это встать в самый конец и напечатать \n. При этом содержимое внутреннего буфера надо флашить (иначе будет месиво), как следствие - не будет работать "тихий" запуск, фар будет моргать панелями при запуске графических приложений. Может еще что вылезет. И не факт, что оно тоже не тормозит, проверять надо.
а что должно сломаться-то?
0. Идем в папку, где много файлов - больше, чем высота экрана.
1. Исполняем cls.
2. Исполняем dir.
3. Копируем весь вывод себе в текстовый файл.
4. Исполняем lol.
5. Копируем весь вывод себе в другой текстовый файл.
6. Сравниваем текстовые файлы, ожидая, что различия будут только в самом конце ("'lol' is not recognized as an internal or external command...")

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 17:33
by awson
DrKnS wrote: Wed 10 Oct, 2018 17:19 6. Сравниваем текстовые файлы, ожидая, что различия будут только в самом конце ("'lol' is not recognized as an internal or external command...")
На самом деле должно быть еще одно различие на самом верху (ушла строка).
И так и происходит! Именно эти два различия только и есть. Больше никаких нет.

На самом деле, если включить часы в панели, то там появляется глюк, когда строка с временем перемещается, но даже и в этом случае строки не исчезают. То есть, я подозреваю, что это другой глюк.

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 17:45
by DrKnS
awson wrote: Wed 10 Oct, 2018 17:33На самом деле должно быть еще одно различие на самом верху (ушла строка).
Копировать, очевидно, надо всё (Alt+Space - Edit - Select All - Enter), а не в пределах окна, иначе зачем у вас там 9999 строк.

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 17:49
by awson
Разумеется, я скопировал всё.

"Сверху ушла строка" означает ушла первая из 9999 строк (в моем случае она была пустой, но могла бы быть и не пустой, если б вывод содержал больше 9999 строк).

Тормоза после апгрейда на RS5 (1809)

Posted: Wed 10 Oct, 2018 17:53
by awson
Я же выше писал "скроллю консоль и построчно и постранично и вверх и вниз и в самое начало и в самый конец и ничего у меня никуда не уходит и не пропадает".

После вашего поста я просто решил перепроверить всё на предмет, что я упускаю какой-то тонкий эффект. Нет, не упускаю. Ничего не пропадает.