勉強

Pairingのプログラムをずっと朝からいじる。
掛け算での加法を外部メソッド呼ばないようにしたり、変数減らしたり。
今あるif文飛ばして速度比較したりして、
アルゴリズムというより、書き方で速度向上を狙う。
と同時にBigIntegerを自分のプログラムにより適応したクラスを書く。
これがなかなか難しい。
内容は簡単なんだが、速度とか考えるとめんどい。
代入もString型の文字から数字を作ってそれを分けてintにしなきゃいけないし。
Integer,String,BigIntegerのクラスメソッドを調べまくった。
 
んでも、それをいったん実用させたらもう後戻りは難しいから、
まだBigIntegerのまま高速化を頑張って2.5秒台で実行可能にした。
ミラーループは0.8秒で1.7秒は最終べきにかかってる。
夜の遅くまで数学を指導してもらってるK山さんに見てもらって、
なんとか、これを数学的に早く解く方法を発見した。
これで予測0.7秒くらいで解けるんじゃないかと思うので、
Pairing全体が2秒を切るのも時間の問題だね。
そうなったらあとはBigIntegerの再実装というか、
代用クラスの実用化でこのプログラムは終わる。
やっと出口というか次のレベルへの入り口が見えてきて、
今日はがんばって勉強した。