From: matz@... (Yukihiro Matsumoto) Date: 2000-07-06T18:18:13+09:00 Subject: [ruby-dev:10250] Re: date/date2 まつもと ゆきひろです In message "[ruby-dev:10247] Re: date/date2" on 00/07/06, Tadayoshi Funaba writes: |何故に、突然アルゴリズムの違いに興味を持たれたのか判らないので、適切な |回答になっているか判りませんが...。 「突然アルゴリズムの違いに興味をもった」理由は以下の二つです。 * 好奇心 私の重要な行動原理です。「好奇心は猫を殺す」というコトワ ザもありますが、今のところ死んでないようです。 * date.rbをodate.rbで置き換えるかどうかの判断材料 あれはbiorhythm.rbのために作られたもので(私は誕生を目撃 しています)、ふなばさんのおっしゃる通りいろいろ作りとし て問題がありました。で、ふなばさんにいろいろ手直ししてい ただいて、だいぶマシになっていると思ってます(まだ変です が)。 で、今回いちばん知りたいのは、今のdate.rbがどのくらい変なの か、という点です。改歴に対応しないのは当然として、odate.rbで 置き換えるというアクションをとるほど変なのか、という点が知り たかったんですね。date.rbはふなばさんのおかげで結構安定して いるので。parsedate.rbのように明らかに今後の破綻するだろうと 思えば躊躇なく置き換えるんですが。 |仮令、アルゴリズムはよしとしても、date の仕様は解せません。 |Date.period! や Date.jan! という名前はよくないです。Date.period! があ |るなら、その逆のクラスメソッドもあってよいはずです。Date.leapyear は、 |その名前から推測される機能とは全く異なります。 確かに。period!, leapyear, daylist, jan1! の各メソッドはむし ろ、privateメソッドであるべきなのでしょう。date.rbが書かれた 頃にはprivateメソッドはありませんでしたし。 # というか、あの頃とはもう別の言語のように変化してる。 これらを適切な名前のprivateメソッドに置き換える改善はありえ るかもです。 |matz> 簡単なベンチマークではdateの方がわずかに速いようですが。 | |んー、そうですか? どういうのでしょう? たしかに、ごく簡単なものでは、 |そうなんですが、今のところ、あまり気にしなくてもよいと考えています。も |ちろん、理由なく遅いのはまずいですが、そういうところがあれば、直したい |と思います。 | |暦計算そのものは、odate や date2 のほうが速いと認識しています。引数チェッ |クとか、ちょっと違っていて、そのあたりが遅いことはあるかもしれません。 |あと、簡単でないものでは、date はかなり遅いと思います。日付でループを |組む、日付の加減算、比較演算、日付でソートをする、すべて遅いでしょう。 どうやらそのようです。私のは簡単すぎて結果的に生成時の日付 チェックだけを見てたようです。生成(とそれに伴う日付チェック (だけはdateの方が速いようですね。 |僕自身も date2 のすべてに満足しているわけでないけど、仕様変更はもう遅 |いですよね :) 多分。ソフトウェアを作る(そして公開する)って難しいですね。 まつもと ゆきひろ /:|}