【レポート】
![]() |
Hello World, We Are Phusion. We provide amazing Ruby & Rails products and services to companies that shape our modern day culture. |
エンタープライズ向けの高速Ruby on Rails実行環境を提供しているPhusionがEfficient substring searching - Phusion Corporate Blogにおいて、特定の文字列からある文字列を検索をするためのアルゴリズムの比較と、その実装系(C++)の公開を実施している。文字列検索はプログラミングで頻出する処理のひとつであり、プログラミング上の参考になる。
文字列から特定の文字列を検出する場合、全体の文字列長(M)と一致させたい文字列の長さ(N)の積O(M*N)が計算量となる。O(M*N)よりも計算量を下げるための方法としてはKnuth-Morris-PrattやBoyer-Mooreなどがあり、Efficient substring searchingでは特にBoyer-Mooreアルゴリズムとその派生アルゴリズム(Turbo Boyer-MooreおよびBoyer-Moore-Horspool)に焦点をあて、アルゴリズムの紹介と性能評価を実施している。
これらアルゴリズムは最初に検索対象となる文字列から計算用のデータを生成し、そのデータを活用して不一致時に可能な限り比較対象を飛ばすという処理をしている。こうすることで不要な比較処理を避け、処理の高速化を実現する。
Efficient substring searchingでは、実現的なプログラミングという立場から見た評価をしており、その結果は次のようになっている。
Efficient substring searchingではBoyer-Moore-Horspoolを現実的なところ効果的なアルゴリズムであるとし、Boyer-Moore-Horspoolをベースにデータをストリーミングで処理できるように実装したC++ライブラリを公開している。文字列検索にBoyer-Mooreを活用するというのはGNU grepのオリジナル開発者も高速処理の基本だと説明している。
GNU grepのオリジナル開発者であるMike Haertel氏はBoyer-Mooreをベースにしつつ、いくつかの実装上の工夫とシステム性能を発揮できるプログラミングテクニックを加えて高速な処理を実現している。
| Rubyをさらに高速化、Phusion Passenger 3 [2010/6/14] |
| Rails向け省メモリVM、Ruby Enterprise Edition [2009/4/23] |
| エンタープライズRuby環境、軽量WebサーバNginxに対応 [2009/4/21] |
| RailsにApacheを - Phusion Passengerモジュール登場 [2008/8/19] |
【コラム】攻略! ツール・ド・プログラミング 第39回 Java用IMライブラリ「Smack」で仲間リストの変更を検出する
【コラム】FileMaker×PHPで作る、簡単・便利なWebアプリ 第90回 FX.phpで複合検索をおこなうには(1)
| ISSCC 2012 - ルネサス、システムLSI向け2ポートSRAM回路技術を開発 [15:38 2/23] |
| 村田製作所、TransferJet規格に対応した無線デバイスを開発 [15:24 2/23] |
| FSL、全通信方式対応のマルチモード/マルチバンドRFトランシーバLSIを発売 [14:21 2/23] |
| ISSCC 2012 - ソニー、転送速度350Mbpsを実現したTransferJet対応LSIを発表 [13:54 2/23] |
| ISSCC 2012 - パナソニック、443MB/sの書き込み速度を実現したReRAMを開発 [13:35 2/23] |
|
人気のPCソフトは?「復活!第17回Vectorプロレジ大賞」が発表 [17:00 2/23] パソコン |
|
これだけは譲れない「恋愛ルール」 [17:00 2/23] キャリア |
|
Corsair、Marvell製コントローラを採用したリード最大515MB/秒のSSD [16:59 2/23] パソコン |
|
『テルマエ・ロマエ』が日本一の浴場を目指す"風呂ゲー"としてソーシャルゲームに [16:50 2/23] ホビー |
|
【レポート】話題のグッズやダイアリーも! 2012年のモレスキン新商品をいち早くチェック [16:50 2/23] クリエイティブ |