タグ

grepに関するtarchanのブックマーク (7)

  • Go言語でag(The Silver Searcher)ライクな高速検索ツールをつくった。EUC-JP/Shift-JISも検索できマス。

    いまや高速パターン検索といえばag(The Silver Searcher)ですが、検索対象がUTF-8のテキストを前提としているため、EUC-JPやShift-JISといったファイルを検索するのに課題があります。 これまで、それらの日語文字セットを検索できるようにするため、色々とagの改造、公開を行っていました。 ag(The Silver Searcher)でEUC-JP/Shift-JISのファイルも検索できるようにしてみた 日語圏特化型ag -白金- の配備が完了しました しかし、特定の国の文字コードだけに特化した修正というのをmasterに取り込んでもらうわけにもいかず、派生ブランチとして追随するのも、やはり面倒… そこで年始にGo言語を触ったのをきっかけに、Go言語でパターン検索ツールをつくってみました。 せっかくなのでポストagを目指して、プラチナサーチャー(The Pl

    Go言語でag(The Silver Searcher)ライクな高速検索ツールをつくった。EUC-JP/Shift-JISも検索できマス。
  • 通常版grepより100%高速なgrep実装「grab」 | ソフトアンテナ

    ファイルの中身を文字列で検索することができるユーティリティ「grep」は、コンピューターを扱う上で、なくてはならないツールといっても過言ではないかもしれません。grepは長い歴史を持つツールで、それ自体少しづつ改良さてきていますが、最近はもっと積極的に高速性を追求したgrep的なツールも開発されてきています。 今回紹介する「grab」もその中の一つ。複数コアを使った検索の並列化や(ただしほとんどの場合遅くなるらしい)、mmapMAP_POPULATEの使用、PCREのJIT機能などを使った高速化の技法を組合せ、SSD上で100%の劇的なパフォーマンスの向上を成し遂げたということです。 しかしさらに上手が… Hacker Newsで「grab」の話題が取り上げられた後、高速化grepの先駆者、「The Silver Searcher」(コマンド名ag)の作者が自らベンチマークを行い、gra

    通常版grepより100%高速なgrep実装「grab」 | ソフトアンテナ
    tarchan
    tarchan 2014/12/23
    全ての高速化手法をgrepにフィードバックすれば幸せになれるのに
  • いまさらgrepが10倍高速化したのはなぜか – はむかず!

    最近GNU grepコマンドの最新バージョンがリリースされ、速度が10倍になったとのアナウンスがあった。それを聞いて、なんであんな枯れた技術に10倍もの高速化の余地があったのだろうと不思議に思った人も多いだろう。 ニュース記事:grepコマンド最新版、”-i”で10倍の高速化 家のリリースノート:grep – News: grep-2.17 released [stable] 今回のリリースでは正確には、マルチバイトロケールで、-iオプション(–ignore-case、つまり大文字小文字を区別しないオプション)をオンにした時の速度が10倍くらいになったそうだ。 なぜそんなに速くなったのか?逆を言えば今までなぜそんなに遅かったのか? そもそも、多くの日人にとって「大文字小文字の区別」というと英語のアルファベットか、せいぜいフランス語とかドイツ語とかのアクサン記号・ウムラウトがついたものく

    tarchan
    tarchan 2014/02/26
    >マルチバイトロケールによっては、「大文字→小文字」または「小文字→大文字」の変換をすると文字のバイト数が変わってしまうことがある
  • grepコマンド最新版、"-i"で10倍の高速化

    GNU grepコマンドの最新版となる「grep 2.17」が公開された。GNU grepコマンドはテキストデータから指定したパターンに一致する行を取り出すといった用途に使われることが多いコマンドで、UNIX系のオペレーティングシステムで使われる頻度が高いコマンドのひとつ。grepコマンドには大文字と小文字を個別せずに一致させるという指定を意味する「-i」オプションを提供しているが、「grep 2.17」ではこの部分の処理を変更し、場合によっては10倍を超える高速化に成功したと説明がある。 現在ではLC_ALL=Cの状態ではなくマルチバイトロケールが設定された状態で使われることがほとんど。英語のみの使用であっても環境変数LANGにはCではなくen_US.UTF-8を指定するなどマルチバイトロケールが設定された状態で使われていることが多い。こうした状態で「-i」を使うと、マルチロケールに存在

  • インテル・AMDのCPUアーキテクトが明かす: GNU grep が速い理由 - karasuyamatenguの日記

    GNU grepの元祖作者がFreeBSDハッカーをschoolしている。 http://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html FreeBSD対GNU grepのパフォーマンスを議論していると思われるとことに「俺はgrepの初代作者だ」と名乗って現われた男がいる。 履歴書(http://duckytech.com/resume.pdf)を見ると、GNU coreutilsに貢献した後、インテルやAMDCPUアーキテクトを勤めている男だ。これは話を聞いた方がよさそうだ。 FreeBSDユーザでもある彼はリストを観閲していたらたまたまGNU対BSDのgrep論争に当ってしまったようだ。BSDのリストにGNU grepの秘密を解く。 技1: 全ての入力バイトを見ないから速い 技2: 見るバイトに関

    インテル・AMDのCPUアーキテクトが明かす: GNU grep が速い理由 - karasuyamatenguの日記
  • gren - 次世代grepを目指したコマンドラインツール - ブログのおんがえし

    grenはgrepの置き換えを目指して作ったコマンドラインツールです。 以下のような特徴を持っています。 特徴 基はfind+grep 指定ディレクトリ以下にある全てのファイルの中身を調べます。 gren 検索文字列 [検索するディレクトリ] でOKです。 ユーザーが指定する項目を最小限に バイナリかテキストかをツールが自動で判断します *.rbや*/*.cppのような指定は必要ありません README,README.jaのような特殊な拡張子でも検索対象に含めます .pngや.exeの中身は調べません。 デフォルトで除外ディレクトリが設定されています * *~, .svn, .git, CVS等は探索対象から除外します 便利な検索結果 検索を開始したディレクトリ(Path)、かかった時間(Time)、ファイル数(Files)、ファイルサイズ(Size)、マッチしたファイル数とヒット数(M

    gren - 次世代grepを目指したコマンドラインツール - ブログのおんがえし
  • ps aux | grep hogehoge で grep プロセスを出さない方法 -

    友人にクイズで出されてわからなかったのだが、 $ ps aux | grep init root 1 0.0 0.0 23820 2016 ? Ss 03:02 0:00 /sbin/init account1 3154 0.0 0.0 7176 1016 pts/0 S+ 14:17 0:00 grep init となるが、どうやって grep プロセスが表示に含まれるのを除去するか。もちろん ps aux | grep init | grep -v grep とかでもよいが、grep 1回で済ますには・・・? $ ps aux | grep '[i]nit' root 1 0.0 0.0 23820 2016 ? Ss 03:02 0:00 /sbin/init 衝撃を受けました。 追記 pgrep -lf init という技も教えてもらいました。 追記2 $ touch init $

    ps aux | grep hogehoge で grep プロセスを出さない方法 -
  • 1