高性能表計算スプレッドシートコンポーネント
高速かつ軽量化を常に ReoGrid の開発目標に掲げ、様々なオリジナル技術を採用し、パフォーマンスの最適化とユーザー体験の向上に努力しています。
こだわりの高速動作
帳票を表示するには、多くのデータを一気に読み込みする必要があります。エンドユーザーの使用体験を最も良くするため、ReoGrid はデータの読み込み性能を高速化する技術を工夫しています。読み込みデータ量の変化に応じて、必要となるメモリの量を自動的に調整し、メモリの割り当て時間を最小に抑えます。
10 万行のデータを一気に画面に読み込むのにかかる時間は、わずか 1 秒たらずです。言い換えれば、一つあたりのデータをセルに格納して表示するのにかかった時間は、わずか0.00001秒です。
ReoGrid ではワークシートのサイズを 100 行から 10 万行に拡大するのにかかる時間は、わずか 0.008 秒( 8 ミリ秒)です。
最適化された計算式解析アルゴリズムにより、数式計算を高速に行うことができます。
なぜ ReoGrid が高速動作できるか
高速動作を実現するために採用したいくつかの技術を紹介します。
最適化したメモリ管理アルゴリズム(Optimized Memory Management Algorithm)
ReoGrid では最適化したメモリ管理アルゴリズムを採用しています。ReoGrid は最大 1,048,576行 x 32,768列 ≒ 343億個のセルのワークシートをサポートしています。一つのセルに 32 バイトが必要だとすると、このワークシートを管理するには約 1 TB のメモリが必要となります。セルの利用状況に応じて必要なメモリのみを割り当て、さらに管理のための時間を最小限に抑える効率的なメモリの管理アルゴリズムが必要です。
ReoGrid ではこの課題を解決するため、ツリーページングインデックス二次元配列(Tree paging indexed two-dimensional array)というアルゴリズムを開発しました。この技術によりメモリの使用量の最適化とアクセススピードの向上を達成しました。
最適化した罫線描画アルゴリズム(Optimized Border Rendering Algorithm)
表計算スプレッドシートは通常、非常に多くのセルを含み、セル毎に罫線を表示します。常に全てのセルの罫線を描画すると、コンポーネントの性能が落ちてしまうという課題があります。ReoGrid では、この課題を解決するため、画面に表示するセルと表示しないセルを速やかに区別し、表示するセルのみの罫線を描画します。さらに、セル毎に描画するのではなく、できる限りリソースを流用するため、同じスタイルである罫線の一番先から最後まで一気に描画します。
最適化したビューポートアルゴリズム(Optimized Viewport Algorithm)
多くのセルのデータを処理するには時間がかかります。ReoGrid では画面に表示しないセルの更新やメンテナンスなどは、必要な時だけ行うことで、操作の反応時間を向上させています。スクロールの進行方向や、画面のズーム調整などを予測し、次に表示するセルを事前に更新し準備します。このアルゴリズムの開発によって、常にストレスのない操作感を実現しました。