修論提出10日前の今頃になって、いまさらながら実験データを取り始めた。
以前学会向けにすでにとっていたので、若干のアルゴリズムの変更はあるもののそこまで違いがないだろうと高をくくっていたのだ。
ところがビックリ、いざプログラムを回してみるとアルゴリズムを変更した部分の計算時間が想定の30倍もかかっていることが判明。その時点で提案手法の有効性がなくなってしまう。提出10日前のまさかのどんでん返し。本気でデータ改竄を考える。
落ち込みながらも、とりあえずプロファイルをしてみると、どうやらある部分でデータ構造からのデータ取得を毎回おこなっているため、ものすごく時間がかかっているらしいことが判明。ライブラリのデータ読み出し関数を使っていたのだが、その関数が意外と計算時間がかかるらしいのだ。結局事前に一度ライブラリから読み出し、その結果を使いまわすような処理に切り替えることで全体で1/20ぐらいの計算時間に抑えられ、無事有効性は保たれた。
それにしても昨日は、半年前と同じ実験をして結果が10倍くらい良くなっていたり(使用していたライブラリを更新していたため)、なんかCSの実験って実装に大きく依存するからあんま意味がない気がする。
以前学会向けにすでにとっていたので、若干のアルゴリズムの変更はあるもののそこまで違いがないだろうと高をくくっていたのだ。
ところがビックリ、いざプログラムを回してみるとアルゴリズムを変更した部分の計算時間が想定の30倍もかかっていることが判明。その時点で提案手法の有効性がなくなってしまう。提出10日前のまさかのどんでん返し。本気でデータ改竄を考える。
落ち込みながらも、とりあえずプロファイルをしてみると、どうやらある部分でデータ構造からのデータ取得を毎回おこなっているため、ものすごく時間がかかっているらしいことが判明。ライブラリのデータ読み出し関数を使っていたのだが、その関数が意外と計算時間がかかるらしいのだ。結局事前に一度ライブラリから読み出し、その結果を使いまわすような処理に切り替えることで全体で1/20ぐらいの計算時間に抑えられ、無事有効性は保たれた。
それにしても昨日は、半年前と同じ実験をして結果が10倍くらい良くなっていたり(使用していたライブラリを更新していたため)、なんかCSの実験って実装に大きく依存するからあんま意味がない気がする。