Эпическая дискуссия про: VS Code Uses 13% CPU When Idle Due to Blinking Cursor
От: c-smile Канада http://terrainformatica.com
Дата: 24.03.17 17:33
Оценка: 11 (7) :))) :))) :)))
VS Code Uses 13% CPU When Idle Due to Blinking Cursor Rendering

Проблема: если оставить на экране VS Code с редактором в фокусе c моргающей кареткой и ничего не делать то редактор съедает 13% CPU.

https://www.reddit.com/r/programming/comments/612v99/vs_code_uses_13_cpu_when_idle_due_to_blinking/
https://news.ycombinator.com/item?id=13940014

Assuming 1 million users of VS Code This blinking cursor will waste $3 million per year in electricity costs, and output 32,000 tons of c02 per year.


2150: "Grandpa, why did the ocean's dry up?"
"well sonny, long ago, Microsoft didn't optimize their code for a code editor's cursor and pushed earth's climate over the edge"


Суть:

Это все про Microsoft Visual Code который как известно есть Electron application — Chromium based.

Курсор они моргают этим вот CSS кодом:

@keyframes monaco-cursor-blink {
    50% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}

.cursor-blink {
    animation: monaco-cursor-blink 1s step-start 0s infinite;
}


Там две проблемы:

1. Типа bug в самом chromium / webkit: эта анимация исполняется с частотой animation frame rate — each 16ms — 60 FPS.
2. Т.к. Chromium (WebKit со Skia backend) это mostly CPU rasterization то это в общем-то простое действо (fill 1px rectangle) потребляет CPU ресурсы как не в себя. На каждый frame rate перерисовывается всё окно.

Ну и сами авторы VS Code тоже в общем-то виноваты, вместо тривиального односекудного setTimer(blink, 1000) запузырить туда animation.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.