VBA処理が徐々に遅くなる(1)

バタイユゲーム支援ツール強化版の時間計測を行っていたら、
処理時間が徐々に遅くなることが分かった。
後のために調べた内容と暫定対策をメモしておく。

1.背景
  バタイユゲーム支援ツール強化版の砲撃処理を計測したら、
  VBA処理が下図のように徐々に遅くなることが分かった。

 1回目2回目3回目4回目5回目6回目7回目8回目9回目10回目
 VBA処理時間(sec)5.045.255.535.565.855.936.216.476.76.73
Python処理時間(sec)2.372.891.971.532.642.152.182.243.52.36

2.原因
  不明である。
  処理開始前と10回目の処理終了後のEXCELのメモリ容量を調べたら、
  下図のように大きくなっているので、原因の1つと考えられる。
 ・処理開始前は49.4MB

 ・10回目の処理終了後は55.3MBと約6MB大きくなる。

 なお、強化版でない支援ツールで手動で砲撃を10回行うと(強化版の1回に相当)、
 下図のようにメモリ容量が大きくなる。従って、VBAの問題と思われる。

3.暫定対策
  今の所効果があるのは、一旦EXCELを終了させる事である。
  そうするとメモリ容量と処理時間がリセットされる。
  下図の5回目と9回目の前に一旦EXCELを終了させた。

 1回目2回目3回目4回目5回目6回目7回目8回目9回目10回目
VBA処理時間(sec)5.265.315.535.775.015.345.545.755.145.38
Python処理時間(sec)2.922.022.563.672.892.011.552.612.862.47

#一旦EXCELを終了させ、1秒後に再起動させるpythonの命令
wb.save()
app = xw.apps.active
app.kill()
time.sleep(1)
wb = xw.Book(path)

次回へつづく

<個人的な感想>
データ量が増えたわけでもないのに、メモリ容量が大きくなる理由が分からない。
VBAのメモリ解放が上手く機能していないように思える。
暫定対策のpythonの命令で1秒のスリープは無くてもリセットされるが、
念の為に入れておく。(気分的なもの)