|
こんにちは。
>データ量が膨大
という事ですので、Excelにも限界はあると思いますよ。
早目にAccessや他のデータベースソフトに切り替えられた方がいいかもしれませんね。
>今回の処理は結局5万*5万回=25億回の処理
んー…Dictionaryの内部的にどういう処理が行われているのか知りませんが、
5万×5万ではないような気がします。
この辺り詳しい方がいらっしゃいましたら、レスがあるかもしれません。
>Dic(a(i, 1)) = Dic(a(i, 1)) + a(i, 2)
>If Dic.exists(di) Then x(j, 1) = Dic.Item(di)
この時にどういう処理がされているかですね。
少なくとも、総当りではないでしょう。
Keyを割り当てながら加算していき、
取り出す時に該当Keyを探しに行っている処理ですから。
この時は、DictionaryのKey(50000)→Key(1)の順に探しに行っているようです。
(仮にKey(1)を50000回取り出しても、それほど時間はかかりませんが)
重複値を検査する時にexistsメソッドは高速で便利なのは確かですね。
|
|