« ディスコグラフィ作成の尽きない悩み | トップページ | 演奏会レポート:ベートーヴェン弦楽四重奏曲 中・後期8曲演奏会 »

ディスコグラフィ作成:とりあえずデータ入力は終わったが・・・

ディスコグラフィ作成に取り掛かり始めてはや20日。どうにかこうにか年内にデータ入力だけは終わりました。入力したCDの枚数700枚ちょっと(DVD10枚、VHS1本も含む)。

データを入力するためにCDを棚から取り出すたびに、
「このCD、いらんわ」
と選別もしたのですが、選別されて「売却」のカテゴリーに入ったCDは約200枚。うち25枚はアマゾン・マーケットプレイスに出品できなかったのですが、残りの約175枚を延々とアマゾンに出品するのにトータルすると丸1日分くらいの労力は使ったかも(^^;)
プラケースがホコリをかぶってたり、CDが汚れてたり(汚れを栄養にしたのか、カビが生えてるものも・・・)していて、ウェットティッシュでプラケースを拭いたり、CDを食器洗い用洗剤で洗ったり、といった作業が大変でした。

入力したCDの枚数にして500枚に達した頃から、データファイルの読み込みが遅くなる、という事態が発生。
データはUTF8エンコーディングのタブ区切りテキストファイル3つに保存していたのですが、読み込み処理が終わるのに50秒もかかる有様。
ファイル読み込み部分のC++のソースを読み返してみると、UTF8からワイド文字列に変換した後のファイルの内容を1行1行分割してvector<CString>に格納している(厳密に言えばLPCTSTR→CStringの変換コンストラクタ)のが遅い原因と推測し、行ごとに分割したテキストデータ(正確に言えば、バッファ上のデータの各行の先頭を指すLPTSTR)をvector<LPTSTR>に格納することと、その他細々した改良で、50秒を15秒まで短縮。それにしても、3つのテキストファイルは合計しても1万行にも満たないので、15秒はまだ時間がかかりすぎ。
そこで、コードの呼び出し回数と処理時間を計測する、プロファイリング用の小さなライブラリ(ソースファイルとヘッダファイル1つづつ。本当に小さい)を1時間ほどでチャチャっと作り、テキストの各行を解析するコードの1行1行の処理時間を計測。すると、1行分のテキストをタブ文字ごとに区切ってvector<LPTSTR>に格納していた部分で、vectorをresizeしたり、データをpush_backするのに最も時間がかかっていることが判明。で、結局、vector<LPTSTR>ではなく、LPCTSTRの配列に、タブ区切りされた文字列の先頭アドレスを格納することで、15秒を5秒に短縮。
もともとのコードでは50秒かかっていたので5秒まで短縮したので、処理速度10倍!1万行弱のテキストデータを処理するのに、C++で書いたネイティブコードで5秒なら妥当なところかな。

そんなこんなで700枚強のCDを入力し終えた今、次に考えないといけないのは、以前の記事でも触れた「同義語」の辞書を作成する問題。1つ前の記事のコメントでDさんに提案して頂いた、googleのサイト内検索、というのもいいかな、と思ったけれど、googleで「ベートーヴェン」で検索をかけたところ、「ベートーベン」はヒットしたが、「Beethoven」はヒットしない。
「ベートーヴェン」で検索をかけたら「Beethoven」もヒットして欲しいし、「弦楽四重奏」で検索したら「String Quartet」(英語)も「Streichquartett」(ドイツ語)も「Quatuor à cordes」(フランス語)もヒットして欲しい。

そうすると、やっぱり自前で同義語辞書を作る必要があるなぁ・・・。
同義語辞書を作るアプリを作らないといけないが、データ構造を考えるのはさほど難しくなさそうではあるが、どんなユーザーインタフェースにしようか、というところで悩んでしまう。
これは来年(といっても2日後^^;)の課題です。

明日は、東京文化会館でベートーヴェンの中期と後期の弦楽四重奏曲を聴き倒すコンサートに出かける予定。しかし、寒波が南下しているというニュースがあるし、彦根や岐阜の明日の天気予報は雪だから、新幹線、事前に予約していたのより1時間早いのぞみに変えようかなぁ・・・(明日の朝の時点でその列車の指定席に空きがあれば)。

|

« ディスコグラフィ作成の尽きない悩み | トップページ | 演奏会レポート:ベートーヴェン弦楽四重奏曲 中・後期8曲演奏会 »

C/C++」カテゴリの記事

パソコン・インターネット」カテゴリの記事

プログラミング」カテゴリの記事

音楽」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/225253/17526839

この記事へのトラックバック一覧です: ディスコグラフィ作成:とりあえずデータ入力は終わったが・・・:

« ディスコグラフィ作成の尽きない悩み | トップページ | 演奏会レポート:ベートーヴェン弦楽四重奏曲 中・後期8曲演奏会 »