Integrated Terminal Performance Improvements
Electronという史上まれに見るそびえ立つクソのようなGUIプラットフォーム上で実装されているVS Codeが、ターミナルの実装をDOMによるものからCanvasによるものに変更したそうだ。これは、DOMによる実装ではパフォーマンスの改善が十分にできなかったからだという。
DOMでターミナルを実装する際の問題ごととして、テキスト選択、テキストアライメント、GC、パフォーマンスを上げている。
テキスト選択:ターミナルのテキスト選択を実現するためにDOMのテキスト選択の挙動をだいぶ上書きしなければならない。
テキストアライメント:一部の文字はモノスペースになってくれず、workaroundとして一文字ごとに固定長のspanで包む必要があるが、これはパフォーマンス上よろしくない。
GC:DOMでターミナルを実装するためにメチャクチャなことをするのでGCによってパフォーマンスが劣化する。オブジェクトをプールすることでなるべくDOMを使いまわしGCを低減する泥臭いハックをしたが、限界がある
パフォーマンス:色々と頑張ったが、結局パフォーマンスは悪かった。
そして結局、要素を組み合わせてレイアウトを決定するという処理だけで16.6ms以上かかる場合もあり、60fpsを達成できないので、ターミナルをDOMで実装するのは不向きだという結論に達したそうだ。
フルHDのデスクトップ画面をキャプチャしてH.264などにエンコード、デコードすることをリアルタイムで行えるほどコンピューターが高速化したこの2017年にターミナルを60FPSで実装するのに苦労しているのはすさまじい。
やはりElectronは悪い文明 粉砕する!
5 comments:
折角なので江添さんがElectronを気に入らない理由も教えて頂けると幸いです
ブラウザがシェルを占拠してやるぜ!みたいなことを言い出して久しいですが、
ブラウザ(WebKit/blinkなど)はいまだにターミナルを持ってないのですね。。
そういわれたらそうなのですが、確実にニーズはありますよね
なんか「電子レンジだけだと自炊できないから調理器具買ったよ」と言ったら「これだから電子レンジはダメだ。絶滅すべき」って返ってきたかのような支離滅裂さを感じる。
Unityと同じでプロが使うようなもんじゃないんだよなぁ…
プロのコックが“メインで”電子レンジ使ってたらドン引きだろう?
「Electronは悪い文明」
おいエゾ、お前がそう思うのは勝手だが、客観的事実かのような物言いは中傷だぞ
Post a Comment