私は楽しみのためにターミナルエミュレータで作業しており、バックエンドの基本を持ち運びしています。しかし、私はフロントエンドでパフォーマンスの問題にぶち当たっています。html DOMノードの制限
あなたが知っているように、端末ウィンドウ内の各文字は異なるスタイルを持つことができます。 (色、背景、太字、下線など)。だから、私の考えは、ビューウィンドウの各文字に<span>
を使用し、必要な場合はインラインスタイルを適用して、必要な程度の制御ができるようにすることでした。
問題は、リフレッシュ時にパフォーマンスがひどいことです。クロムは約120 ops /秒、firefoxは80で私のPCでそれを処理することができます。しかし、インターネットエクスプローラはほとんど6になります。したがって、htmlで私の勢いでキャンバスを使用しようとしましたが、キャンバス上のテキストは非常に遅いです。オンライン私はキャッシュの読み込みに役立ちますので、文字ごとにキャッシュを実装し、いくつかの複合操作でビットマップフォントに色を適用できます。しかし、これはDOMよりも遅いです。
次に私はdomに戻ってdocument.createDocumentFragment
を使って試しましたが、標準を使用して少し悪化します。
今どこで最適化を開始するのか分かりません。私はキャラクターの変化を追跡することができましたが、ターミナルが多くの入力を受けたときにはまだこの遅さに遭遇します。
私は完全に間違って何かをするかもしれないので、私は任意のヘルプは高く評価され...
DOMに新しいです!あなたが要素にHTMLを追加するinsertAdjacentHTML
を使用する場合、文字列のテキストは、驚くほど効率的であるとして、HTMLの
http://jsperf.com/canvas-bitma32p-cache-test/6
インラインスタイルの代わりにCSSファイルを使用する必要があります。 http://stackoverflow.com/a/8284398/5111146を参照してください。 –
http://jsperf.com/style-element-vs-attr –
スタイルのインスタンスごとに1つのスパンを使用してください。例えば、スタイルが決して変更されない場合、1つの 'span'タグが行うべきです。スタイルが一度変更されて元のスタイルに戻った場合は、3つの 'span'タグが必要です。 –