2010年12月 のアーカイブ

100円時計の精度を測ってみた(2) キャンドゥ・NO.14812・デジタルクロックスケルトン

2010年12月29日 水曜日

キャンドゥの100円時計の精度は、月差+11秒でした。

以前の記事で、ダイソーの100円時計は月差+5分で使い物にならなかった事を書きました。

100円時計の精度を測ってみた(1) ダイソー@馬坂コム

そこで今回は、キャンドゥで別の時計を購入し、再度測定をしてみました。今回の主役の100円時計ちゃんは、「NO.14812 デジタルクロックスケルトン(ソリッドカラー)」という機種です。

11月29日 23時27分00秒の様子

デジタル時計(右)は今回の主役である100円時計ちゃんです。左の腕時計は基準に使ったシチズンの電波時計で、毎日夜中に校正されてます。両者は完全に一致させました。

12月29日 12時49分00秒の様子

およそ30日後には、11秒くらい進みました。月差11秒で、十分実用的です。

結果は一つのサンプルでしか行っていないので、固体によって違う可能性があります。あと、季節などによる温度変化も結果に影響するかもしんない。

HyperEstraierのディレクトリスキャン

2010年12月14日 火曜日

HyperEstraierのインデックス作成で、ディレクトリを指定してスキャンさせるより、個別のファイルパス渡したほうが高速で安全。

つまり、

estcmd gather ... <dir>

というようにせず、

estcmd gather ... <file>

みたいにした方が良いです、っていう話です。

1. ディレクトリ名が「表」で終わると、それ以下のファイルがスキャンされない

HyperEstraierでは、文書を登録する時、ディレクトリを指定するとファイルを再帰的に取得してインデックスに追加してくれます。ところが、これを使ったとき、「表」で終わるディレクトリ名以下のファイルがインデックスされません。この問題は既に知られていて、最新バージョン(1.4.13)にさらに修正を追加したしたWindowsバイナリが配られています。

一部の日本語フォルダ名でインデックスが作成されない件、とその回避パッチ@めも日記

ファイルサーバ検索システムを作る@めも日記 — 修正版Winバイナリがここで取得できる

2. ディレクトリ名「clock」以下のファイルがスキャンされない

何故か、「clock」ディレクトリ以下をスキャンしない現象が起きます。たとえば、簡単なディレクトリ構造を作ってテストしてみると、

C:\test>dir /s /b /a:-d C:\test
c:\test\clock\a.txt
c:\test\dir1\a.txt

C:\test>estcmd scandir -tf -pa C:\test
C:\test\dir1\a.txt

となってしまいます。前述の「1.」に書いた1.4.13版と、本家のWindows版1.4.10でも結果は同じでした。ソースを読む能力も無く、原因はよく分からないですが、estcmdのディレクトリ指定使わず、登録文書のパスが書かれたファイルをあらかじめ準備しておいて、それを代わりに指定することで、この問題は回避できました。

登録文書のパスのリストは、もとから入ってるdirとか、NT版UNIX-like toolsに含まれるfindf.exe (NT版find)を使うことでできます。例えば、

dir /s /b /a:-d C:\Doc
findf C:\Doc -type f -printms

として作れます。

3. estcmdのディレクトリスキャンがあまり速くない

前述の「2.」で書いたことと関連するのですが、

estcmd gather ... <dir>

とか、

estcmd scandir <dir>

のようなディレクトリスキャンは、結構遅いです。ローカルディスクなんかだとそれほど気にならないのですが、ネットワーク上の共有フォルダとかを対象にした場合、スキャン自体に時間がかかっているように見えます。スピードアップするためにも、「2.」で書いた方法であらかじめ登録対象のファイルパスをリストしておいて、estcmd gatherに渡すのが良さそうです。

estcmdのディレクトリスキャンが遅いことを確かめるために、以下の3つの方法で、6万8千ファイルの置かれた共有フォルダのファイルリストを作り、所要時間を比べてみました。

estcmd scandir -tf -pa \\host\share\
dir /s /b /a:-d \\host\share\
findf \\host\share\ -type f -printms

コマンド 実行時間
estcmd scandir -tf -pa \\host\share\ 496.2[sec]
findf \\host\share\ -type f -printms 27.7[sec]
dir /s /b /a:-d \\host\share 34.9[sec]

estcmdがかなり遅いことが分かります。pdfやwordといったファイルを登録する場合、フィルタで一つ一つ処理が実行されるので、このフィルタの所要時間の方が支配的になり、遅いことは無視できますが、テキスト等をある程度登録する場合では、かなり速度が違うのではないかと思います。

結局、「2.」の問題を回避するためには、ファイルリストを渡すほかないです。そうすれば、「3.」は自動的に解決されます。