08-24-2011, 04:15 PM,
|
|||||
|
|||||
RecordGrid のパフォーマンスについて
大量データを高速に表示できる RecordGrid ですが、
それでもカラムの数が膨大になってくると、スクロールや描画がモタつくことがありますよね。 とくにRecordGridCell などを継承して、RecordGridColumn のscell-spec に適用したカスタムセルを利用すると その違いが顕著になるような気がしています。 少しでもパフォーマンスを上げたいときは、どんなことに気をつければいいのでしょうか。 |
|||||
08-24-2011, 04:23 PM,
|
|||||
|
|||||
RE: RecordGrid のパフォーマンスについて
もしそのセル(カラム)がIME入力を必要としないならば、
input-method-enabled? = false とすると、 矢印キーでのセル間のフォーカス移動がすばやくなるようです。 これは、セルが入力状態になるたびにIMEのON/OFFが切り替わっているのをスキップするためです。 |
|||||
08-24-2011, 04:28 PM,
|
|||||
|
|||||
RE: RecordGrid のパフォーマンスについて
RecordGrid のパフォーマンスは、主に各セル(カラム)の refresh-data メソッドの処理に依存するようです。
そのため、カスタムセルを利用する際、継承先のクラスでは、 なるべくこのメソッド内の処理を簡潔にすることがパフォーマンス向上の近道のようです。 また、データが存在せず、再描画しなくてもよいカラムなどがあれば、 refresh-data のなかで{supre.refresh-data} を呼ばないようにスキップすることで、 全体の描画速度が向上すると思います。 セルのプロパティにある possibly-displayed? を参照して下記のような記述をすると、 体感ですが、若干スクロールのスピードが上がったような気がしないでもなくもないです。 Code: {if self.possibly-displayed? == true then |
|||||
09-02-2011, 07:18 PM,
|
|||||
|
|||||
RE: RecordGrid のパフォーマンスについて
(08-24-2011, 04:23 PM)umemura Wrote: もしそのセル(カラム)がIME入力を必要としないならば、どうやらIMEツールバーによってフォーカス移動の速度が変わる様です。 大量カラム、大量データを持たせたRecordGridにて速度の検証をしてみましたが、 Microsoft IME2003ではinput-method-enabled? = falseをしなくてもフォーカス移動の遅延はほとんどありませんでしたが、 Microsoft IME2007ではinput-method-enabled? = falseをしないとかなりフォーカス移動の遅延が見受けられました。 これはIMEツールバーの種類によって、IMEのON/OFF速度が異なるからなのでしょうか |
|||||
09-05-2011, 02:40 PM,
|
|||||
|
|||||
RE: RecordGrid のパフォーマンスについて
|
|||||
09-05-2011, 03:06 PM,
|
|||||
|
|||||
RE: RecordGrid のパフォーマンスについて
(08-24-2011, 04:15 PM)umemura Wrote: 少しでもパフォーマンスを上げたいときは、どんなことに気をつければいいのでしょうか。私は以下を気をつけます。 ・設計段階でカラム数(表示している列数)を多くならないようにする ・継承したRecordGridCellクラスのrefresh-dataメソッドやformat処理に以下のような処理を書かない →Recordの値をセットする(RecordSetEventイベントが発生してしまうため) →Recordを検索する(RecordSet.selectなど) ・表示のみのカラムであればStandardFixedStringCell(またはそれを継承したクラス)を使用する また思い出したら追記します。 |
|||||
09-08-2011, 06:41 PM,
|
|||||
|
|||||
RE: RecordGrid のパフォーマンスについて
影響が大きい割によく忘れられがちなのは、プログラムからレコードの変更、追加、削除などを行うときに batch-events?=true を指定しないこと。これは痛い。
Code: {with record-set.batch-events? = true do 厳密には、すでにRecordGridに関連づいているRecordSetに対して複数の変更(Recordに値をセットするとか、RecordGrid.appendするとか)を同時に行う場合に必須です。使いどきの判断が難しいと思う場合はなにも考えずに毎回これをかきましょう。イディオムです。 |
|||||
09-09-2011, 08:14 AM,
(This post was last modified: 09-09-2011, 08:23 AM by hokada.)
|
|||||
|
|||||
RE: RecordGrid のパフォーマンスについて
グリッドの表示領域が増えれば増えるほど、
画面に表示されるデータ(セル)が多くなる程、 描画に時間がかかる為、スクロールが遅くなってしまいますよね |
|||||
01-06-2014, 02:34 PM,
(This post was last modified: 01-06-2014, 02:53 PM by umemura.)
|
|||||
|
|||||
RE: RecordGrid のパフォーマンスについて
RecordGrid.batch-events?=true を指定するのとしないのとでは、かなりパフォーマンスに影響がありますね。
また、別スレッドの「セル単位での色指定」でも記載しましたが、 RecordGridCell.refresh-data の中で、このbatch-events?を参照するようにすると、 さらに全体のパフォーマンスが向上しました。 Code: {curl 8.0 applet} |
|||||
« Next Oldest | Next Newest »
|
Possibly Related Threads... | |||||
Thread | Author | Replies | Views | Last Post | |
RecordGrid の行の実際の高さの調べ方 | kay | 2 | 3,117 |
03-01-2016, 06:14 PM Last Post: kay |
|
RecordGrid でDropdownList を表示 | umemura | 10 | 14,859 |
06-30-2015, 06:52 PM Last Post: dyoshida |
|
RecordGrid 列の表示/非表示について | Yudai-s | 2 | 4,383 |
05-19-2015, 06:54 PM Last Post: Yudai-s |
|
RecordGrid のセル単位のフォーカス制御方法 | kay | 2 | 3,286 |
03-06-2015, 06:34 PM Last Post: kay |
|
RecordGrid のセルのフォーカス可否制御 | kay | 2 | 3,579 |
03-02-2015, 07:56 PM Last Post: kay |
|
RecordGrid の縦のスクロールバー | umemura | 3 | 5,154 |
01-20-2014, 10:38 AM Last Post: umemura |
|
RecordGrid の NavigationPanel について | umemura | 2 | 5,117 |
08-23-2011, 08:52 AM Last Post: c-s |
|
RecordGrid で オートコンプリート | umemura | 1 | 4,744 |
07-29-2011, 10:58 PM Last Post: umemura |
|
RecordGrid での右詰め | umemura | 3 | 6,012 |
07-29-2011, 01:32 PM Last Post: c-s |
Users browsing this thread:
3 Guest(s)
3 Guest(s)