« 2008年01月 | メイン | 2008年03月 »

2008年02月29日

Pathtraq 最新ランキング ガジェットを公開しました

screenshot  弊社の中島が Pathtraq から最新の人気情報を取ってきてデスクトップに表示するウィジェットを開発してくれました。Windows Vista をご使用の方は、このウィジェットをインストールすることで、最新の話題を常にチェックすることができるようになると思います。お試しいただければと幸いです。

 興味をおもちの方は、ぜひ中島のブログエントリ「Pathtraq 最新ランキング ガジェットを公開しました (Neutral Scent)"」をご覧ください。


投稿者 kazuho : 2008年02月29日 15:52 | トラックバック (0) このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

2008年02月26日

Range Coder の展開速度を SSE で高速化 (してもらった)

 二分検索 (バイナリサーチ) は、分岐予測が効きにくいため、パイプラインが深い最近の CPU とは相性の悪い処理です。Range Coder の展開処理においても二分検索がボトルネックになるのですが、光成さんに「SSE で高速化できないんですかね」と話したところ、さくっとコードを書いてくれました。ありがとうございます。

 というわけで、まずは Calgary Corpus の paper1 でベンチマーク。

続きを読む "Range Coder の展開速度を SSE で高速化 (してもらった)"

投稿者 kazuho : 2008年02月26日 16:31 | トラックバック (0) このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

2008年02月22日

Range Coder の終了処理

 CodeZine:高速な算術圧縮を実現する「Range Coder」(算術圧縮, データ圧縮, Range Coder)等を見ていると、多くの Range Coder の実装では、終了処理において冗長な出力をしているようです。

 私の理解と記憶が正しければ、予測の上限値と下限値が異なる最初のビットまで出力すれば、残りのビットの出力は不要なはずです。Range Coder が一般化する以前の、ビット単位の操作を行っていた Jones 符号化器はそのような実装がされていたように思うのですが、Range Coder で速度を稼ぎ始めた時に、この点が見過ごされるようになったのでしょうか。

 もちろんデータサイズが大きい際は、この点に起因する数バイトの無駄は問題はならないのですが、小さなデータを多数、静的テーブルを用いて圧縮するような場合は、無視できない影響が発生します。奥は Range Coder をちゃんと見たのは昨日が初めてなので、理解が間違っているかもしれませんが、備忘録をかねてブログエントリに起こしておきたいと思います。

21:56追記: CodeZine 上にある岡野原さんのコードは BSD ライセンスらしいので、奥の改変版を /lang/cplusplus/range_coder/range_coder.hpp - CodeRepos::Share - Trac にコミットしました。よろしければご覧ください。

投稿者 kazuho : 2008年02月22日 20:55 | コメント (1) | トラックバック (0) このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

2008年02月05日

Tritonn (MySQL+Senna) の join を高速化

 自分の利用形態において、Tritonn の処理を最適化するパッチを書きました。具体的には、2種類の最適化を行いました。ひょっとするとバグがあるかもしれませんが、興味がある方は、以下のパッチ (tritonn-1.0.9用) とあわせてごらんください。

tritonn-embed-primary-key-v3.patch

1. 全文索引内にプライマリキーを格納

続きを読む "Tritonn (MySQL+Senna) の join を高速化"

投稿者 kazuho : 2008年02月05日 14:58 | トラックバック (0) このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク