TDictionaryはどれくらい早いのか?テンミニッツサイトストラテジーサンデーアマグラマーNorimakiの開発日誌。その他Tipsども、Norimakiです。今回は開発関係のお話です。現在開発中のツールでサイトマネージャ的なものがあるんですが、フィルタリングのスピードが遅いという問題点が発覚しました。FFilteredList.Add(s.Row);end;FKVSDataはTDictionary、FFilteredListはTListです。:integer;end;こんな感じで定義されています。同じものがないようにFFilteredListに追加していくということをやっています。FKVSDataのキーはエクセルのセルと同様に考えてもらって構いません。縦(Row)と横(Index)でキーを構成します。目的は行数を知ることと、どのRowが存在するかをチェックすることです。RowはRowと言いながら連続しているとは限らず抜けもあります。いう前提でデータの数はRowのMAXが1271、IndexのMAXが35とします。計44485個のデータをチェックすることになります。この状況で先ほどのコードを実行すると、ウチの環境では、およそ300ミリ秒かかります。0.3秒と聞くとそこそこ早い気もするんですが意外にワンテンポ遅れて感じます。これをTDictionaryを使って書き換えてみます。FreeAndNil(Dt);end;こんな感じ。さっきと微妙に違いますが、そこはご愛嬌。TDictionaryのValueが無意味と言われそうなんですが、とりあえず。実際の速度を計測すると。