SSブログ

システム起動の高速化検討 [システムトレード]

エクセルでトレーディングシステムを構築する場合、システムの起動に掛かる時間が気に掛かることがあります。
これは、システムの起動時に再計算が行われるためであり、通常、システムの機能が豊富であるほど、起動に時間が掛かってしまいます。

また、エクセルのリソースの関係だと思われるのですが、システムのファイル容量が大きい場合、起動時の再計算に異常なほどの時間が掛かってしまうことがあります。
この問題については根本的な解決法は見出していないのですが、少なくとも、元の起動時再計算時間を短縮することで、ある程度は改善できるのではないかと考えます。

しかし、起動に時間が掛かる現象は再現性に乏しく、何らかの対策を実行しても、その効果を確実に認識することは困難です。
したがって、これからお話しする方法がシステムの起動時間短縮に効果があるかどうかについては、それを保証するものではないことをご了承ください。

さて、システムの起動時間を短縮するには、エクセルのオプションで計算方法を手動にすることが最も効果的です。
しかしその場合、当然のことながら、起動後にシステムのパラメータ等を変更しても、性能指標等の値は更新されません。

値を更新するためには、手動で再計算を指示するか、オプションメニューで計算方法を自動に設定してやる必要があります。
しかし、それでは大変不便ですし、再計算をし忘れた場合、誤ったシグナルに従って売買してしまうなどといった可能性があります。

したがって、システム起動時には自動的に再計算を行なう設定になっている必要があるわけです。しかし、最初から再計算を自動に設定しておくと、多くの起動時間が掛かってしまう、という問題が生じるわけです。

通常のエクセルブックであれば、ブックの起動時間をそんなに気にする必要はないでしょう。しかし、トレーディングシステムのような巨大なブックになると、例えばKFシステムクリエイターでは容量は40MB近くになりますし、演算するセルの総数は100万個近くに達します。

そのようなブックを開いて、なおかつその時に再計算を行なう場合、かなりの時間を要してしまうだろうことは、想像に難くありません。
KFシステムクリエイターでは、様々な工夫によって、Core2 Duo E6550(2.33GHz)、RAM2GB、SATA-HDD、Windows Xp、Excel2003、の環境で、システム起動時間3.1秒を実現しています。

しかし、冒頭でも述べましたように、何らかの影響によって、起動時間が20秒あるいは30秒近くも掛かってしまう場合があります。
それが生じる可能性を低減すると共に、システム起動時間の更なる高速化を実現する方法はあるのでしょうか。

実は、簡単な方法で、それが実現できることが分かりました。それは、Workbook_Openプロシージャに、次の1行を記述する、というものです。

  Application.Calculation = xlAutomatic

そして、計算方法を手動に設定した状態からシステムを起動すると、起動時間が2.4秒に短縮されます。これは20%以上の高速化となります。
起動時間が30秒近くも掛かる場合がある症状については、現在のところ確認されていませんが、解決されたかどうかは分かりません。

システムの起動時間が大きな問題となるのは、システムの日々の更新作業がほとんどだと思います。それは通常、マクロで実行しますので、システム起動時の計算方法を手動に設定するのは容易にできます。システムを呼び出す命令の直前に、次の1行を記述するだけです。

  Application.Calculation = xlManual

それによって、システム更新に掛かる時間の短縮が期待できるわけです。1システム当りわずか0.7秒の短縮に過ぎませんが、以前の私がそうであったようにシステム数が3,000もあると、全体で30分以上の時間節約になります。

起動時間が気になるほど重いシステムを運用されている方は、そう多くはいらっしゃらないと思いますが、少しでも短縮したいと思われる方は、ご検討されてみてはいかがでしょう。

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。