最近大学の方が忙しい・・・
最近技術ネタがなくなってきました。
TBBのpipelineテンプレートを使用した場合としない場合でどの程度の差が出るのか気になったので、SHAで比較実験しようとSHAを実装してみました。まだ比較実験はしてないんですが、構造としては文字列を整形する(fetch)ファンクタとそれを演算する(process)ファンクタの2つを実装してみました。
通常の演算では
fetch -> process -> fetch -> process -> ...
ですが、ここをパイプライン処理で
fetch -> process fetch -> process fetch -> process ...
っていう感じです。
fetch -> process のまとまりが例えばn回あるとしたら
通常の線形の方の処理時間は単純な計算で (fetch + process) * n の時間ですが、パイプライン処理は
fetch > process のとき fetch * n + process
fetch < process のとき fetch + process * n の時間で処理が終わります。
まぁ処理速度のあまっている現代ではSHAみたいな線形時間で終了するようなものをいちいちパイプライン処理させる理由はないですが、まぁ研究ですよ。さすがにSHAをGPGPUで走らせようなどというあほな妄言は吐きませんよ。デメリットしかないですしね。
そんなこんなでまぁ近々pipelineテンプレートを使って、数GBのデータのSHA512をとってみたいですねぇ。Linuxの標準実装されているSHAの演算速度がキモイ・・・。どんな実装なんだよ・・・。オレの実装で5秒ぐらいかかったものがLinux標準だと1秒未満とかなのにorz。今度ソース探してみますわ。なんか見つかったらここでも書けるしね。
とりあえずLinux上でTBBを動かすこともやってないのでそちらの実験もしつつ・・・。