DB作成に要する時間 2 考察 version 10

2019/05/31 14:40 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
DB作成に要する時間 2 考察 # prog
## こんなに遅いとちょっと使えないよなあ
しかしfoobarはどうして速いんだろう?
やってることは基本的に同じだと思うんだけど
コードのチューンだけで速くなるのだろうか?
キーポイントはタグの取得だ
mutagenは遅すぎだよなあ・・
everythingも速いけどなあ、そもそも仕組みが違うんだろうか?

## mutagen
mp3がエラー含めると5868ファイル、タグ取得に48.639秒、1ファイルにつき0.00828秒だった
速いのか遅いのか???
ちなみにエラーはmutagenのエラーで、ほぼタグ無しによる
普通にファイルをopenしてバイナリで読み込んでタグを取得してcloseして
私も昔zipファイルを扱うときにヘッダを自分で取得してデータを取り出すって事をやったことあるので何となくわかるんだけど
時間は仕方ないのか?
mutagenは全てのタグを取りに行ってるから、その分で時間がかかるのだろうか?
特定のタグだけを獲りに行けるんだろうか?

自作した方が良いかな
しかしタグってエンコードフォーマットによって違うんだなあ
それぞれ用に書くのって面倒だ
mutagenのソース見たらわかるだろうか??
pythonで自作するくらいならmutagen使った方が速いかもなあ

## 設計
・新規、更新
- 1 init
connect DB
ファイル列挙
フォルダ除外
拡張子でフィルタリング
DBに追加(mtime なし)
 エラー時はmtime比較、同じならパス
            違ったらUpdate(mtime削除)
- 2 def mutagen
DBからmtimeがNULLのものを抽出
mtime取得
mutagen取得
データをupdate 
close DB

・監視
- 3 def watch
connect DB
ファイルをDBに追加(mtime なし)
 エラー時はmtime比較、同じならパス
            違ったらUpdate(mtime削除)
→②を呼び出す


<状況表示> status bar --- def disp status
adding m_files to DB...
getting TAG ... **/****
      

こんなに遅いとちょっと使えないよなあ

しかしfoobarはどうして速いんだろう?
やってることは基本的に同じだと思うんだけど
コードのチューンだけで速くなるのだろうか?
キーポイントはタグの取得だ
mutagenは遅すぎだよなあ・・
everythingも速いけどなあ、そもそも仕組みが違うんだろうか?

mutagen

mp3がエラー含めると5868ファイル、タグ取得に48.639秒、1ファイルにつき0.00828秒だった
速いのか遅いのか???
ちなみにエラーはmutagenのエラーで、ほぼタグ無しによる
普通にファイルをopenしてバイナリで読み込んでタグを取得してcloseして
私も昔zipファイルを扱うときにヘッダを自分で取得してデータを取り出すって事をやったことあるので何となくわかるんだけど
時間は仕方ないのか?
mutagenは全てのタグを取りに行ってるから、その分で時間がかかるのだろうか?
特定のタグだけを獲りに行けるんだろうか?

自作した方が良いかな
しかしタグってエンコードフォーマットによって違うんだなあ
それぞれ用に書くのって面倒だ
mutagenのソース見たらわかるだろうか??
pythonで自作するくらいならmutagen使った方が速いかもなあ

設計

・新規、更新

  • 1 init
    connect DB
    ファイル列挙
    フォルダ除外
    拡張子でフィルタリング
    DBに追加(mtime なし)
     エラー時はmtime比較、同じならパス
                違ったらUpdate(mtime削除)
  • 2 def mutagen
    DBからmtimeがNULLのものを抽出
    mtime取得
    mutagen取得
    データをupdate
    close DB

・監視

  • 3 def watch
    connect DB
    ファイルをDBに追加(mtime なし)
     エラー時はmtime比較、同じならパス
                違ったらUpdate(mtime削除)
    →②を呼び出す

<状況表示> status bar --- def disp status
adding m_files to DB...
getting TAG ... /**