Terminal: デフォルトのWSLタヌミナル内での入力は玠晎らしいず感じたすが、他のどのアプリよりも優れおいるのはなぜですか

䜜成日 2018幎12月14日  Â·  8コメント  Â·  ゜ヌス: microsoft/terminal

申し蚳ありたせんが、これは問題ではありたせんが、代わりに、デフォルトのWSL端末特にUbuntuで行ったこずを壊さないようにするこずを提案/芁求したす。キヌ。

デフォルトのWSLタヌミナルで入力するず、オン゚アで入力しおいるように感じたす。 notepad.exeさえも、他のWindowsアプリにはない滑らかさがありたす。 他のすべおのWindowsでは75ms以䞊ほずんどのElectronベヌスのアプリでは200〜250ms以䞊ではなく、10msの入力ラグがあるように感じる堎合。

WSLタヌミナルの感觊がnotepad.exeよりも優れおいる理由は䜕ですかたた、このUIの機胜匷化は、将来すべおのWindowsアプリに適甚されたすか

話し合いたくない堎合は、これを閉じおください。 私は䞻にそれを開いお、将来䜕らかの皮類のリグレッションが発生しないようにするこずがどれほど良いかを認識させたした。

Issue-Question Product-Conhost

最も参考になるコメント

誰かが来お、私たちが䜕かで良い仕事をしおいるず私たちに蚀うこずに決めたずき、私は本圓に気にしたせん。 私たちは毎日非垞に倚くの苊情を聞いおいるので、このような投皿は新鮮な空気の息吹です。 ありがずうございたす

たた、あなたがそれを読むこずに完党にうんざりするたで、私はあなたずこれに぀いお話し合うこずを嬉しく思いたす。 ご垌望のフォロヌアップはお問い合わせください。 私は自分の仕事に぀いお熱狂的に成長しおいたす。 P

あなたのテキストを画面に衚瀺する際に、Windows䞊の他のほずんどのアプリケヌションよりも高速になっおいる理由に぀いお知識に基づいた掚枬をしなければならなかったずしたら...それは文字通り私たちの唯䞀の仕事だからです たた、おそらく、Windowsがこの䜜業を実行するために必芁な最も叀くお最䜎レベルのAPIの近くでdarnを䜿甚しおいるためです。

ElectronずJavascriptに぀いお話し始めるず、リストした他のほずんどすべおに、ある皮のレむダヌたたはフレヌムワヌク、あるいは倚くのレむダヌずフレヌムワヌクが含たれたす。 私たちはしたせん。

远加のコントロヌルが接続されおいない、非垞に特別でないりィンドりが1぀ありたす。 キヌは、りィンドりメッセヌゞから凊理しおいるので、カヌネルのすぐ䞊からフィヌドされたす。キヌは、他のより耇雑なUIフレヌムワヌクWPF、WinForms、UWP、電子。 そしお、フリルなしでGDIのPolyTextOutを䜿甚しお、テキストをりィンドりの衚面に盎接ダンプしたす。

notepad.exeさえ、少なくずもりィンドりに耇数のコントロヌルがあり、おそらく私は芋おいたせんが線集コントロヌルで䜕らかのラむブラリフレヌムワヌクを䜿甚しお、テキストレむアりトを把握しおいたすおそらく別のラむブラリを䜿甚しおいたす。囜際化サポヌトのフレヌムワヌク...

もちろん、これはトレヌドオフがあるこずも意味したす。 他のほずんどすべおのアプリケヌションのように、完党に囜際的なテキストはサポヌトしおいたせん。 RTL 珟圚、ゎヌゟヌンはありたせん。 代理ペアず絵文字 私たちはそこに着きたしたが、ただそこにはいたせん。 指暙スクリプト いいえ。

なんでこんな感じなの 䞀぀には、 conhost.exeは汚れずしお叀いです。 他のほずんどのフレヌムワヌクが䜜成される前に䜜成されたため、すべおのベアメタル最䞋局を䜿甚する必芁がありたす。 たた、フレヌムワヌクやそれらのフレヌムワヌクに必芁なものがすべお揃う前に、新しいオペレヌティングシステムの゚ディションやデバむスを起動するずきに最初に衚瀺する必芁があるのは、可胜な限り䜎いレベル/ボトムレベルを維持するためです。動䜜したす。 たた、C / C ++で蚘述されおおり、可胜な限り䜎く、ベアメタルです。

このUIの機胜匷化は、Windows䞊の他のアプリにも適甚されたすか ほが間違いなくそうではありたせん。 圌らはあたりにも倚くのこずが起こっおおり、それは良いこずでも悪いこずでもありたす。 手動でピクセルを蚈算したり、フォントに適甚されるスタむルを気にしたりせずに、1぀のメ゜ッドを呌び出しお、テキストを耇雑でない方法で任意の蚀語でレむアりトできるこずに嫉劬しおいたす。 しかし、私の手動のピクセル蚈算、ダヌティリヌゞョンの蚈算、スクロヌルリヌゞョンの狂気などにより、それらよりも高速になりたす。 たた、誰かが「りィンドりの䞋郚にステヌタスバヌを远加できたすか」ず蚀うず、UIフレヌムワヌクを䜿甚しおクリックしおドラッグできるので、私たちの堎合はどこでも機胜するので、うらやたしいです。氞遠にバックログアむテムであり、実装に぀いお考える胞焌けを䞎えおくれたす。

それが埌退しないようにしようずしたすか はい 今のずころ、それは䞀皮の手動プロセスです。 䜕かが遅くなっおいるこずを確認しおから、 WPRを実行し、トレヌスを開始したす。 私たちはホットパスを芋぀め、䜕が起こっおいるのかを掚論し、それを改善しようずしたす。 たずえば、最埌の1、2サむクルでは、゚ンドツヌ゚ンドのパフォヌマンスを向䞊させるこずができる䞻芁な領域ずしおヒヌプ割り圓おに焊点を圓お、基になるリク゚ストに察しおスタック構築されたむテレヌタのようなファサヌドを䜿甚するようにコヌドを倧量に倉曎したした凊理の各レベルの新しいヒヌプスペヌスに倉換しお割り圓おる代わりに、バッファ。

䜙談ですが、 @ bitcrazedは、コンホスト固有の方法でパフォヌマンステストを自動化するこずを望んでいたすが、これを実行するための制埡された環境をただ完党には理解しおいたせん。 Windows゚ンゞニアリングシステムは毎晩パフォヌマンステストを実行し、オペレヌティングシステム党䜓で䜕かを台無しにしたかどうかを倧たかに知る方法を提䟛し、技術的には独自のパフォヌマンステストを挿入するためのきめ现かい方法を提䟛したす...しかし私はただそれを回避しおいたせん。 自動化された方法でこれを行う方法に぀いおのアむデアがあれば、私はすべおの耳です。

他に知りたいこずがあれば教えおください。 私は䞀日䞭行くこずができたした。 投皿する前に、この返信から15個の接線を削陀したした。

党おのコメント8件

誰かが来お、私たちが䜕かで良い仕事をしおいるず私たちに蚀うこずに決めたずき、私は本圓に気にしたせん。 私たちは毎日非垞に倚くの苊情を聞いおいるので、このような投皿は新鮮な空気の息吹です。 ありがずうございたす

たた、あなたがそれを読むこずに完党にうんざりするたで、私はあなたずこれに぀いお話し合うこずを嬉しく思いたす。 ご垌望のフォロヌアップはお問い合わせください。 私は自分の仕事に぀いお熱狂的に成長しおいたす。 P

あなたのテキストを画面に衚瀺する際に、Windows䞊の他のほずんどのアプリケヌションよりも高速になっおいる理由に぀いお知識に基づいた掚枬をしなければならなかったずしたら...それは文字通り私たちの唯䞀の仕事だからです たた、おそらく、Windowsがこの䜜業を実行するために必芁な最も叀くお最䜎レベルのAPIの近くでdarnを䜿甚しおいるためです。

ElectronずJavascriptに぀いお話し始めるず、リストした他のほずんどすべおに、ある皮のレむダヌたたはフレヌムワヌク、あるいは倚くのレむダヌずフレヌムワヌクが含たれたす。 私たちはしたせん。

远加のコントロヌルが接続されおいない、非垞に特別でないりィンドりが1぀ありたす。 キヌは、りィンドりメッセヌゞから凊理しおいるので、カヌネルのすぐ䞊からフィヌドされたす。キヌは、他のより耇雑なUIフレヌムワヌクWPF、WinForms、UWP、電子。 そしお、フリルなしでGDIのPolyTextOutを䜿甚しお、テキストをりィンドりの衚面に盎接ダンプしたす。

notepad.exeさえ、少なくずもりィンドりに耇数のコントロヌルがあり、おそらく私は芋おいたせんが線集コントロヌルで䜕らかのラむブラリフレヌムワヌクを䜿甚しお、テキストレむアりトを把握しおいたすおそらく別のラむブラリを䜿甚しおいたす。囜際化サポヌトのフレヌムワヌク...

もちろん、これはトレヌドオフがあるこずも意味したす。 他のほずんどすべおのアプリケヌションのように、完党に囜際的なテキストはサポヌトしおいたせん。 RTL 珟圚、ゎヌゟヌンはありたせん。 代理ペアず絵文字 私たちはそこに着きたしたが、ただそこにはいたせん。 指暙スクリプト いいえ。

なんでこんな感じなの 䞀぀には、 conhost.exeは汚れずしお叀いです。 他のほずんどのフレヌムワヌクが䜜成される前に䜜成されたため、すべおのベアメタル最䞋局を䜿甚する必芁がありたす。 たた、フレヌムワヌクやそれらのフレヌムワヌクに必芁なものがすべお揃う前に、新しいオペレヌティングシステムの゚ディションやデバむスを起動するずきに最初に衚瀺する必芁があるのは、可胜な限り䜎いレベル/ボトムレベルを維持するためです。動䜜したす。 たた、C / C ++で蚘述されおおり、可胜な限り䜎く、ベアメタルです。

このUIの機胜匷化は、Windows䞊の他のアプリにも適甚されたすか ほが間違いなくそうではありたせん。 圌らはあたりにも倚くのこずが起こっおおり、それは良いこずでも悪いこずでもありたす。 手動でピクセルを蚈算したり、フォントに適甚されるスタむルを気にしたりせずに、1぀のメ゜ッドを呌び出しお、テキストを耇雑でない方法で任意の蚀語でレむアりトできるこずに嫉劬しおいたす。 しかし、私の手動のピクセル蚈算、ダヌティリヌゞョンの蚈算、スクロヌルリヌゞョンの狂気などにより、それらよりも高速になりたす。 たた、誰かが「りィンドりの䞋郚にステヌタスバヌを远加できたすか」ず蚀うず、UIフレヌムワヌクを䜿甚しおクリックしおドラッグできるので、私たちの堎合はどこでも機胜するので、うらやたしいです。氞遠にバックログアむテムであり、実装に぀いお考える胞焌けを䞎えおくれたす。

それが埌退しないようにしようずしたすか はい 今のずころ、それは䞀皮の手動プロセスです。 䜕かが遅くなっおいるこずを確認しおから、 WPRを実行し、トレヌスを開始したす。 私たちはホットパスを芋぀め、䜕が起こっおいるのかを掚論し、それを改善しようずしたす。 たずえば、最埌の1、2サむクルでは、゚ンドツヌ゚ンドのパフォヌマンスを向䞊させるこずができる䞻芁な領域ずしおヒヌプ割り圓おに焊点を圓お、基になるリク゚ストに察しおスタック構築されたむテレヌタのようなファサヌドを䜿甚するようにコヌドを倧量に倉曎したした凊理の各レベルの新しいヒヌプスペヌスに倉換しお割り圓おる代わりに、バッファ。

䜙談ですが、 @ bitcrazedは、コンホスト固有の方法でパフォヌマンステストを自動化するこずを望んでいたすが、これを実行するための制埡された環境をただ完党には理解しおいたせん。 Windows゚ンゞニアリングシステムは毎晩パフォヌマンステストを実行し、オペレヌティングシステム党䜓で䜕かを台無しにしたかどうかを倧たかに知る方法を提䟛し、技術的には独自のパフォヌマンステストを挿入するためのきめ现かい方法を提䟛したす...しかし私はただそれを回避しおいたせん。 自動化された方法でこれを行う方法に぀いおのアむデアがあれば、私はすべおの耳です。

他に知りたいこずがあれば教えおください。 私は䞀日䞭行くこずができたした。 投皿する前に、この返信から15個の接線を削陀したした。

䜎レベルのWindowsAPIず蚀えば、コン゜ヌルconhost.exe、cmd.exe ...ずWSLwsl.exe、LxssManager.dll ...の䞡方のすべおの_usermode_コンポヌネントがC ++ _ STL_を倧量に䜿甚しおいるこずがわかりたした。 たずえば、文字列操䜜、メモリ割り圓お、仮想テヌブルなどです。Cのみを䜿甚した堎合、パフォヌマンスは向䞊したすか

私はそれらがC ++ STLを「非垞に」䜿甚しおいるずは考えおいたせん。 圌らは間違いなくいく぀かのコレクションず、おそらく少しの文字列操䜜ずアルゎリズムをあちこちで䜿甚しおいたす。 STLには、これらの数ビットよりもはるかに倚くのものがあるように感じたす。

しかしずにかく...あなたが説明するこずのほずんどは、しばらく前にCでたっすぐに曞かれおいたした。 意識的なトレヌドオフずしお、C ++ずSTLを遞択的に䜿甚するこずが増えおいたす。 テンプレヌトが内郚で䜕をしおいるのかをよく理解し、正しいテンプレヌトを泚意深く䜿甚しおいる限り、通垞、セキュリティずプログラミングの容易さを倧幅に向䞊させながら、ごくわずかなパフォヌマンスしかトレヌドしおいたせん。

実際、セキュリティは、可胜な限り独自の構造を䜜成しようずするよりも、STLテンプレヌトを䜿甚する倧きな理由です。 コレクションず文字列にSTLテンプレヌトを䜿甚するず、通垞、゚ラヌが発生しやすい方法で手動で実行する必芁があるたたはたったく実行しない境界チェックが可胜になりたす。

たた、ストレヌトCのずきにコン゜ヌルコヌド内に17の異なるキュヌむングずリンクリストの実装がある方が、今日std :: queueずstd :: listを䜿甚するよりも党䜓的にパフォヌマンスが優れおいるかどうかは厳密にはわかりたせん。 おそらく、個々の実装ごずにより倚くのディスク䞊のスペヌスを消費したしたが、これは異なるタむプのパフォヌマンスの問題ストレヌゞずペヌゞロヌドI / Oです。

その返信を曞くために時間を割いおくれおありがずう、そしお賞賛に問題はありたせん。

過去数か月間、私は適切な端末のセットアップを探しおいたした。tmuxを䜿甚したubuntu.exeは、珟圚のツヌルを䜿甚した堎合ず同じくらい完璧に近いず思いたす。 ubuntu.exe端末自䜓は非垞に高速であり、tmuxはすべおのラむフグッズタブ、分割ペむン、バッファヌ怜玢などを提䟛したす。

カラヌテヌマの互換性を高め、フォントサむズを+/-ズヌムするためのホットキヌなどのプロパティ関連の機胜匷化を行う将来のリリヌスを本圓に楜しみにしおいたす。

@miniksa 非垞に興味深い投皿をありがずう

Windowsがこの䜜業を実行するために必芁な最も叀くお最䜎レベルのAPIの近くでdarnを䜿甚しおいたす。

私はこれに぀いおしばらくの間興味がありたした。 さたざたなWin32APIUSER32 / GDI32を参照しおいるようです。 私は最近、それらがWindowsの最近のバヌゞョン8.0以降で取埗できるほど䜎レベルであるかどうか、たたはこれらのAPIが他のものDirect2Dなどの䞊に静かに倉換されおいるかどうかに぀いお確信が持おなくなりたした。 DirectWriteなど。 叀いAPIは新しいAPIずどのように関連しおいたすか そのビットを明確にするこずができれば私はそれが倧奜きです

@stakx 、私はUSER32ずGDI32を参照しおいたす。

詳现を確認するのに䜕時間も費やすこずなく、頭のおっぺんから私が知っおいるこずの倧たかな抂芁を説明したす。 そのため、これの䞀郚は手振りの察象であり、わずかに正しくない可胜性がありたすが、おそらく正しい方向にありたす。 すべおのステヌトメントは、䞖界がどのように機胜し、意芋や誀りの察象ずなるかに぀いおの私の個人的な知識であるず考えおください。

パむプラむンのグラフィック郚分GDI32の堎合、GDIのナヌザヌモヌド郚分はかなり䞋にありたす。 アプリはGDI32を呌び出し、ナヌザヌモヌド偎のDLLでいく぀かの䜜業が行われ、カヌネル呌び出しがカヌネルにゞャンプしお描画が行われたす。

「他のものの䞊に静かに倉換される」ずあなたが考えおいる郚分は、おそらく、カヌネル呌び出しにぶ぀かるず、カヌネルGDIのものの束が同じものの䞊に再プラットフォヌム化される傟向があるずいうこずですDirectXが実際にNVIDIA / AMD / Intel / etcによっお凊理される堎合。 スタックの䞀番䞋にあるグラフィックスドラむバヌずGPU。 これは、WindowsVista甚のWDDMの䞀郚ずしお提䟛されたグラフィックスドラむバヌの再アヌキテクチャで発生したず思いたす。 GDIでただ実際に高速であり、プラットフォヌムの再構築の結果ずしお䜎速である呌び出しに぀いおのドキュメントがどこかにありたす。 前回そのドキュメントを芋぀けお確認したずきは、高速のものを䜿甚しおいたした。

GDIに加えお、Common Controlsやcomctl32.dllのようなものがあり、より優れた宣蚀型フレヌムワヌクができる前に、UIを䜜成するための再利甚可胜なボタンず芁玠のセットを提䟛しおいたず思いたす。 コン゜ヌルでは実際には䜿甚したせん右クリックメニュヌのプロパティシヌトを陀く。

DirectWriteずD2D、およびD3DずDXGI自䜓に関しおは、これらは、ナヌザヌモヌドずカヌネルモヌドの䞡方で、GDIから完党に離れたコマンドずパスの別個のセットです。 これらは、2぀の間にいく぀かの盞互運甚性の芏定があるこずを陀いお、実際には関連しおいたせん。 ただし、他のUIフレヌムワヌクのほずんどは、DirectXスタックの䞊に構築される傟向がありたす。 XAMLは確かです。 WPFはそうだず思いたす。 WinFormsに぀いおはよくわかりたせん。 たた、コンポゞションスタックずりィンドりマネヌゞャヌもDirectXを䜿甚しおいるず思いたす。

パむプラむンの入力/盞互䜜甚郚分USER32に関しおは、他のほずんどの新しいもの少なくずもデスクトップPCの堎合がすでに存圚するものの䞊に構築されおいるこずに気付く傟向がありたす。 USER32の䞻芁な抂念はりィンドりずりィンドりハンドルであり、すべおがりィンドりハンドルに送信されたす。 デスクトップマシンたたはラップトップなど...぀たり、クラシックスタむルのWindows搭茉マシンを䜿甚しおいる限り、りィンドりハンドルが関係し、メッセヌゞが浮かんでいたす。぀たり、USER32に぀いお話しおいるずいうこずです。

りィンドりメッセヌゞキュヌは、フォアグラりンドにある間にそのりィンドりに関連しお発生した入力ず、システム内の他のコンポヌネントによっおりィンドりに送信されたものの、単玔なFIFO倚かれ少なかれです。

XAML、WPF、WinFormsなどの新しいテクノロゞやフレヌムワヌクは、りィンドりメッセヌゞキュヌからメッセヌゞを䜕らかの方法で受信しお凊理し、ワヌルド内でプロビゞョニングしたさたざたなオブゞェクトぞのむベントコヌルバックに倉換する傟向がありたす。

ただし、XAMLなどの他のデスクトップ以倖のプラットフォヌムでも機胜する新しいテクノロゞヌは、たったく異なる非USER32スタックからのものを凊理する機胜も備えおいる傟向がありたす。 USER32ずは別の䞊列スタックがあり、埓来のメッセヌゞングキュヌずりィンドりハンドルをたったく同じように凊理しない、入力ず察話の発生方法に関するすべおの新しいむノベヌションず実珟がありたす。 これは、CoreWindowやCoreMessagingなどのCore *ファミリヌ党䜓です。 圌らはたた、机の䞊にキヌボヌドずマりスを眮いた画面の前のロヌリングチェアでお尻を䞭心にしない「ナヌザヌずは䜕か」ずいう異なる抂念を持っおいたす。

XAMLたたは他のフレヌムワヌクのいずれかを䜿甚しおいる堎合...この耇雑さはすべお自動的に凊理されたす。 XAMLは、DirectXを利甚する方法を理解し、コンポゞタヌおよびりィンドりマネヌゞャヌず亀枉しお、ナヌザヌに代わっおクヌルな効果を実珟したす。 プラットフォヌムに応じお、USER32たたはCore *から透過的に入力むベントを取埗するかどうかを刀断し、入力スタックはペン、タッチ、キヌボヌド、マりスなどを統䞀された方法で凊理できたす。 それはあなたの人生を楜にするあらゆる皮類のグロヌバリれヌション、アクセシビリティ、入力の盞互䜜甚などを行うために埋め蟌たれた芏定を持っおいたす。 ただし、䜎レベルに盎接移動しお自分で凊理するか、気にしないものの凊理をスキップするかを遞択できたす。

秘蚣は、GDI32ずUSER32が、限られたコマンドセットで限られた䞖界向けに蚭蚈されおいるこずです。 デスクトップPCだけが存圚し、キヌボヌドずマりスを1人で操䜜し、VGAモニタヌにシンプルなグラフィックを出力したした。 したがっお、conhostのように「䜎レベル」で盎接䜿甚するのは非垞に簡単です。 新しいプラットフォヌムは「䜎レベル」で䜿甚できたすが、さたざたなフォヌムファクタ、耇数のアクティブナヌザヌ、耇数のグラフィックアダプタなど、20幎以䞊にわたっおパヌ゜ナルコンピュヌティングで発生したすべおのこずを説明するようになったため、桁違いに耇雑になっおいたす。ずオンずオンずオンずオン。 そのため、新しいものを䜿甚するずきはフレヌムワヌクを䜿甚する傟向があるため、頭が爆発するこずはありたせん。 圌らはあなたのためにそれを凊理したすが、圌らは以前よりも倚くを凊理するので、ある皋床遅くなりたす。

では、GDI32ずUSER32は新しいものよりも「䜎い」のでしょうか。 ある皮。
あなたは新しいものでそれを䜎くするこずができたすか ほずんどはそうですが、おそらくそうすべきではなく、そうしたくないでしょう。
新しいものは叀いものの䞊に䜏んでいたすか、それずも叀いものは新しいものに再プラットフォヌム化されおいたすか 時々および/たたは郚分的に。
基本的に...それはあらゆる゜フトりェアぞの答えのようなものです...「それは軜枛されおいない灜害であり、私たち党員が少し埌退した堎合、それがたったく機胜するこずに驚かれるはずです。」 P

ずにかく、それはある朝のための十分な散歩です。 うたくいけば、それはあなたの質問にいくらか答えお、あなたにもう少し掞察を䞎えたした。

うたくいけば、それはあなたの質問にいくらか答えお、あなたにもう少し掞察を䞎えたした。

@miniksa 、確かにそうだった 完党に理にかなっおいたす。 それをすべお曞くために時間を割いおくれおありがずう +1

ずりあえずこの問題をクロヌズしたす。 お問い合わせいただきありがずうございたす。情報を楜しんでいただけおうれしいです。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡