アスースって言ってた頃が

日記
10 /02 2012
君は言う、アスースって読むんだね




でも気が付いたらエイスースになってました。

【PC Watch】
ASUS、国内でのブランド呼称を「アスース」から「エイスース」に




VBA処理速度実験2

日記
10 /02 2012
前回、エクセルVBAでの
ソースの組み方による処理速度の比較をしてみましたが、
今回はその時に使ったコピペの処理の書き方での比較をしてみました。

私の悪い癖なのですが、雑にコピペ処理のソースを書くとき、
こんな感じにしてしまいます。
Cells(1, 1).Select  コピーするセルを選んで
Selection.Copy  コピーして
Cells(tate, 1).Select  ペースト先のセルを選んで
ActiveSheet.Paste  ペースト。

実はこの流れは1行で書く事ができ、
Cells(1, 1).Copy Cells(tate, 1)
となります。

なんでわざわざ上の書き方になってしまうかといいますと、
書くときに、エクセルで実際に操作する時の手順を
そのままソースに書いてしまう癖のせいです。
結果、マクロの記録と同じようなソースになってしまう。

で、今回はやる事は同じものの、
ソースの書き方によって実際に処理速度はどれほど変わるのか
を実測してみました。

テストパターン
処理件数は10,000件とします。
1.シート内コピー(雑)
  コピー元と先が同じシートで、なソース

2.シート内コピー(きれい)
  コピー元と先が同じシートで、きれいなソース

3.シート間コピー(雑)
  コピー元と先が別のシートで、なソース

4.シート間コピー(きれい)
  コピー元と先が別のシートで、きれいなソース


実験マシン
前回の実験と同じマシンです。
 最(?)先端
  CPU:i3-2100
  メモリ:4G
  OS:win7
  エクセル:2010

 懐かしマシン
  CPU:celeron 2.53G
  メモリ:512G
  OS:winXP
  エクセル:2000


結果
実行結果2
くっきりと差が出ました。
まとめるとこんな感じでしょうか。

1.ソースは綺麗にしたほうが速い。

2.ソースを綺麗にすると、コピー元と先が別でも同じでも、
  処理速度はほぼ同じ。

3.やっぱりなぜか古い環境のほうが速い。


1,2は納得できるものの、3だけは不思議でならない。
特に、唯一新環境のほうが速かったシート間コピーですら、
ソースを綺麗にすると古い環境のほうが速くなるという。
シート間を行ったり来たりっていう処理は新環境のほうが強く、
コピーの処理自体は古い環境のほうが強かったって事なんでしょうね。

で、なぜ古い環境のほうが速かったのかについては、
OSのせいなのかオフィスのせいなのか、いまだ分からず。