[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:00679] TSU_SPEED のマージの前に



乃村です。TSU_SPEED 枝マージの前に。

土屋さんのスケジュールの検索方式について、
ちょっと質問です。a月b日のスケジュール (dayinfo) を作るのに、
それぞれのスケジュールに S式を評価させて、true/false を
返させているのですよね。

すると、x日分で y個のスケジュールがあると、
x * y で効いてきませんか?
intersect/ がどのぐらいまで耐えられるのだろう。

僕の方法は、それだと辛そうだったので、
parse した時点で tree に入れています。

-2nd +- Tue -(schedule1 schedule2 schedule3)
     +- Wed -(schedule4 schedule1)

tree に入れてしまえば、a月b日のデータを調べるのはほぼ定数時間で
すので x だけが factor になります。

# 現行の mhc が遅いのは、僕のいいかげんな elisp とか、そういった
# 部分のせいですね。
# 実は、byte-compile しなれば、ほぼ同じ実行時間ではないですか?

試しに .schedule を 26個 cat して
C-c. で一度データを作らせておいて、
C-c. を 1回やってみると、速度は逆転しました。
(TSU_SPEED は bytecompile したもの。幹の物は .el のまま。)

# 実は、前に土屋さん方式と同じように書いてみたら、
# 僕の elisp の能力が原因で、遅くて使い物にならなかったのでした。^^;

X-SC-Schedule: の導入によって intersect/ に入る率が増えそうで、
ちょっと心配です。

とはいえ、僕の方式は、日付を静的に表現できないと tree に入れられ
ないので、x月y日から n 日毎というスケジュールには有効ではありません。
ので、土屋方式は今後のために必須です。それに、parse がめちゃ速い。

S式と X-SC-Schedule: のサポート後、先々 slot の切り方等を
もう一度考えたり、(ほとんどのスケジュールは静的日付けで書けるので、)、
両者の併用を検討する必要が先々出て来そうですが、実際の使用上問題
が出るかどうかは、少し見守る必要がありそうです。

# それにしても、土屋さんのコードは十分速いので、杞憂かもね。
--
nom

p.s. calendar.el も、同じようなことをいっています。静的に書けな
     い物は、S式でカバーするけど、これを使うとめちゃ重いので覚悟
     しろと。。