12

通常、Excel で折れ線グラフまたは積み上げ棒グラフとして視覚化するいくつかのデータ (10 ~ 50 列、数十万行) があります。
ユーザーは、個々のサンプルに到達するためにグラフをズームインおよびズームアウトできるようにしたいと考えていますが、この種の操作は実際には Excel を屈服させます。

ブラウザーでの視覚化を処理するインライン JavaScript を使用して、データを HTML ページに埋め込むことを考えています。flotr JS チャート作成ライブラリのようなものがチャートに利用されます。

  1. これはばかげた考えですか?
  2. ブラウザはこの種の負荷に対応できていますか?
  3. これは解決済みの問題で、質問する前にもっと徹底的にグーグルで検索する必要がありましたか?
4

3 に答える 3

9

JavaScript自体は非常に高速になっているため、Javascriptはおそらく準備ができています。私の経験では、ブラウザーは通常、非常に大きな DOM 構造を処理する準備ができていません。少なくとも、処理速度が遅い理由を突き止めるために多くの時間を費やすことが予想されます。また、多くの「標準」javascript ライブラリ (prototype/jquery が思い浮かびます) は、「過度に」大きな DOM 構造を操作するのに適していないこともわかります。

特定の操作がすべてのブラウザで遅いことを確認する準備をしてください。ただし、最終的には、ブラウザごとに 3 ~ 4 の異なる理由があることが判明します。これは、適度に大きな DOM を扱った経験に基づいています。確かに可能ですが、まともな結果を得るにはかなりの作業が必要です。

于 2009-03-27T17:22:11.617 に答える
6

ベンチマークと最適化を実行するという Adam の提案を強くお勧めします。最近、Flot を使用して大規模なデータセットをプロットする作業を行ったところ、Internet Explorer のパフォーマンスが許容範囲を下回りました (たとえば、チャートのプロット中に開発ボックスでブラウザ全体が約 20 秒間ハングしました)。

Flot は、canvasInternet Explorer 9 以降でのみサポートされているグラフ作成用の要素を使用します。Flot は、 ExplorerCanvasライブラリを使用して、古いバージョンの Internet Explorer をサポートします。このライブラリはVMLを使用し、DOM を介して VML 要素を操作してグラフィックを描画します。

Internet Explorer 8 スクリプト プロファイラーを使用すると、プロットのレンダリングにかかる​​時間のほとんどが、ネイティブのinsertAdjacentHTML メソッドを呼び出して VML 要素を作成するのに費やされていることがわかりました。ネイティブ メソッドの呼び出しのパフォーマンスを改善するためにできることは何もなかったため、許容できるパフォーマンスを得るために、代わりにプロットされるデータ ポイントの数を減らす (DOM で作成される VML 要素を減らす) ことに取り組みました。

古いバージョンの Internet Explorer のサポートを必要としない、または気にしない場合、Flot/Flotr は大規模なデータセットを十分に処理できることがわかります。ただし、これらのバージョンをサポートする必要がある場合は、大規模なデータセットをグラフ化するときにパフォーマンスの問題が発生することに備えてください。

于 2009-05-08T14:09:51.967 に答える
4

Javascript は大規模なデータセットを視覚化する準備ができていますか?

はい - 言語は、適切な環境で、重要なレコードセットを簡単に処理し、操作、視覚化などを行うことができるところまで来ています。言語自体は問題ありません。

これはばかげた考えですか?

いいえ、実際には、ほぼすべてのコンピューターで、この有能なクロス プラットフォーム言語を実行できると期待できます。

ブラウザはこの種の負荷に対応できていますか?

一部の可能性があります-実際に実行している処理とアクションによって異なります。高速な JavaScript エンジンを使用する Chrome と、これに大きく依存する人がますます増えているため、JavaScript 速度戦争が勃発しています。これは完全に有効な使用シナリオだと思います。

ベンチマークと最適化の準備を整える必要があります。これは、javascript の根幹を掘り下げることを意味します。欠陥を修正できるように、結果を公表してください。

-アダム

于 2009-03-27T17:18:30.300 に答える