Enviar búsqueda
Cargar
Rubysapporo Stringsearch
•
0 recomendaciones
•
806 vistas
Akio Ishida
Seguir
Tecnología
Educación
Denunciar
Compartir
Denunciar
Compartir
1 de 14
Descargar ahora
Descargar para leer sin conexión
Recomendados
こわくないScala vol.2
こわくないScala vol.2
FScoward
仮想記憶の構築法
仮想記憶の構築法
magoroku Yamamoto
Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
blackenedgold
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
blackenedgold
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
What's Cuckoo?
What's Cuckoo?
Takuya Nakajima
Ruby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrake
Masahiro Tanaka
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
Haruka Oikawa
Recomendados
こわくないScala vol.2
こわくないScala vol.2
FScoward
仮想記憶の構築法
仮想記憶の構築法
magoroku Yamamoto
Real World OCamlを読んでLispと協調してみた
Real World OCamlを読んでLispと協調してみた
blackenedgold
(define)なしで再帰関数を定義する
(define)なしで再帰関数を定義する
blackenedgold
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
What's Cuckoo?
What's Cuckoo?
Takuya Nakajima
Ruby科学データ処理ツールの開発 NArrayとPwrake
Ruby科学データ処理ツールの開発 NArrayとPwrake
Masahiro Tanaka
関数型プログラミング入門 with OCaml
関数型プログラミング入門 with OCaml
Haruka Oikawa
Interactive Music II SuperCollider入門 2 - 関数とUGen
Interactive Music II SuperCollider入門 2 - 関数とUGen
Atsushi Tadokoro
Lets enjoy-terminal-life - たのしいたーみなる
Lets enjoy-terminal-life - たのしいたーみなる
totzyuta
Programming in Scala Chapter 17 Collections
Programming in Scala Chapter 17 Collections
Joongjin Bae
Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話
Masaya Konishi
菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方
Nagi Teramo
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
博文 斉藤
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Kazuya Wada
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
Altanative macro
Altanative macro
Motohiro KOSAKI
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
kpfx07 LT ruby-processingでイケメンになりたい
kpfx07 LT ruby-processingでイケメンになりたい
koki_h
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
よりよいPHPUnitの実行方法を求めて
よりよいPHPUnitの実行方法を求めて
Akio Ishida
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
Akio Ishida
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
Local php-100828 2
Local php-100828 2
Akio Ishida
PostgreSQLの範囲型と排他制約
PostgreSQLの範囲型と排他制約
Akio Ishida
Getting start with knockout.js
Getting start with knockout.js
Akio Ishida
Ruby Postgres
Ruby Postgres
Akio Ishida
Ruby Postgres 2009
Ruby Postgres 2009
Akio Ishida
Más contenido relacionado
La actualidad más candente
Interactive Music II SuperCollider入門 2 - 関数とUGen
Interactive Music II SuperCollider入門 2 - 関数とUGen
Atsushi Tadokoro
Lets enjoy-terminal-life - たのしいたーみなる
Lets enjoy-terminal-life - たのしいたーみなる
totzyuta
Programming in Scala Chapter 17 Collections
Programming in Scala Chapter 17 Collections
Joongjin Bae
Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話
Masaya Konishi
菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方
Nagi Teramo
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
MITSUNARI Shigeo
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
博文 斉藤
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Kazuya Wada
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
Altanative macro
Altanative macro
Motohiro KOSAKI
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
kpfx07 LT ruby-processingでイケメンになりたい
kpfx07 LT ruby-processingでイケメンになりたい
koki_h
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
La actualidad más candente
(14)
Interactive Music II SuperCollider入門 2 - 関数とUGen
Interactive Music II SuperCollider入門 2 - 関数とUGen
Lets enjoy-terminal-life - たのしいたーみなる
Lets enjoy-terminal-life - たのしいたーみなる
Programming in Scala Chapter 17 Collections
Programming in Scala Chapter 17 Collections
Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話
菩薩でもわかる!Rで動かすExcelアドインの作り方
菩薩でもわかる!Rで動かすExcelアドインの作り方
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
USP 友の会 LT 資料 20130413
USP 友の会 LT 資料 20130413
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
Altanative macro
Altanative macro
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
kpfx07 LT ruby-processingでイケメンになりたい
kpfx07 LT ruby-processingでイケメンになりたい
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
Destacado
よりよいPHPUnitの実行方法を求めて
よりよいPHPUnitの実行方法を求めて
Akio Ishida
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
Akio Ishida
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Yuta Sakurai
Local php-100828 2
Local php-100828 2
Akio Ishida
PostgreSQLの範囲型と排他制約
PostgreSQLの範囲型と排他制約
Akio Ishida
Getting start with knockout.js
Getting start with knockout.js
Akio Ishida
Ruby Postgres
Ruby Postgres
Akio Ishida
Ruby Postgres 2009
Ruby Postgres 2009
Akio Ishida
PostgreSQLで学ぶBoyer-Moore-Horspoolアルゴリズム
PostgreSQLで学ぶBoyer-Moore-Horspoolアルゴリズム
Akio Ishida
XIDを周回させてみよう
XIDを周回させてみよう
Akio Ishida
使いこなそうGUC
使いこなそうGUC
Akio Ishida
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
Akio Ishida
textsearch_jaで全文検索
textsearch_jaで全文検索
Akio Ishida
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems Manager
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems Manager
Amazon Web Services Japan
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
Destacado
(15)
よりよいPHPUnitの実行方法を求めて
よりよいPHPUnitの実行方法を求めて
Prophecyを使ったユニットテスト
Prophecyを使ったユニットテスト
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
PHPカンファレンス2013 今ドキのPHPの書き方 ~PHP逆引きレシピ改訂版~
Local php-100828 2
Local php-100828 2
PostgreSQLの範囲型と排他制約
PostgreSQLの範囲型と排他制約
Getting start with knockout.js
Getting start with knockout.js
Ruby Postgres
Ruby Postgres
Ruby Postgres 2009
Ruby Postgres 2009
PostgreSQLで学ぶBoyer-Moore-Horspoolアルゴリズム
PostgreSQLで学ぶBoyer-Moore-Horspoolアルゴリズム
XIDを周回させてみよう
XIDを周回させてみよう
使いこなそうGUC
使いこなそうGUC
phpspecで学ぶLondon School TDD
phpspecで学ぶLondon School TDD
textsearch_jaで全文検索
textsearch_jaで全文検索
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems Manager
AWS Black Belt Online Seminar 2017 Amazon EC2 Systems Manager
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
Similar a Rubysapporo Stringsearch
HPC Phys-20201203
HPC Phys-20201203
MITSUNARI Shigeo
Go言語のスライスを理解しよう
Go言語のスライスを理解しよう
Yasutaka Kawamoto
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Yoshiyuki Asaba
Ctb57 with god7
Ctb57 with god7
kingtomo
NArray and scientific computing with Ruby - RubyKaigi2010
NArray and scientific computing with Ruby - RubyKaigi2010
Masahiro Tanaka
Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
Tokyo r47 beginner_2
Tokyo r47 beginner_2
Takashi Minoda
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
Takashi Hoshino
Tokyo r45 beginner_2
Tokyo r45 beginner_2
Takashi Minoda
Nagoya.R #12 入門者講習
Nagoya.R #12 入門者講習
Yusaku Kawaguchi
Write good parser in perl
Write good parser in perl
Jiro Nishiguchi
ggplot2 110129
ggplot2 110129
Takashi Minoda
Prosym2012
Prosym2012
MITSUNARI Shigeo
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
Takeshi Arabiki
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
Nishida Kansuke
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
Ruby 3 の型解析に向けた計画
Ruby 3 の型解析に向けた計画
mametter
URLで遊ぼう
URLで遊ぼう
Hiraku Nakano
Evolution Of Enumerator
Evolution Of Enumerator
Akinori Musha
Similar a Rubysapporo Stringsearch
(20)
HPC Phys-20201203
HPC Phys-20201203
Go言語のスライスを理解しよう
Go言語のスライスを理解しよう
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Ctb57 with god7
Ctb57 with god7
NArray and scientific computing with Ruby - RubyKaigi2010
NArray and scientific computing with Ruby - RubyKaigi2010
Clojure programming-chapter-2
Clojure programming-chapter-2
Tokyo r47 beginner_2
Tokyo r47 beginner_2
Intel TSX HLE を触ってみた x86opti
Intel TSX HLE を触ってみた x86opti
Tokyo r45 beginner_2
Tokyo r45 beginner_2
Nagoya.R #12 入門者講習
Nagoya.R #12 入門者講習
Write good parser in perl
Write good parser in perl
ggplot2 110129
ggplot2 110129
Prosym2012
Prosym2012
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Ruby 3 の型解析に向けた計画
Ruby 3 の型解析に向けた計画
URLで遊ぼう
URLで遊ぼう
Evolution Of Enumerator
Evolution Of Enumerator
Último
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Último
(9)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Rubysapporo Stringsearch
1.
多バイト文字列の
検索アルゴリズム (株)サイクル・オブ・フィフス 石田朗雄 10/01/30
2.
その前に、、、 ●
http://www.local.or.jp/?LDD/LDD10Winter ● LOCAL DEVELOPER DAY '10 /Winter ● 2010/2/13(土) 12:45~18:35 ● 札幌市産業振興センター セミナールームA 10/01/30
3.
文字列検索 ●
PostgreSQLでは ● SELECT strpos('high', 'ig') => 2 ● SELECT strpos('high', 'X') => 0 ● replace(), split_part(), string_to_array() ● Rubyでは ● "high".index("ig") #=> 1 ● "high".index("X") #=> nil ● String#partition, String#include 10/01/30
4.
文字列検索アルゴリズム ●
Boyer-Mooreとその仲間 ● Boyer-Moore – 二種類のskiptable使ったアルゴリズム ● Boyer-Moore-Horspool – 片一方だけでもそこそこ速いんじゃね? – PostgreSQLはコレ ● Sunday Quick Search – 片一方しか使わないんだったら1Byte先を見てもよく ね? – Rubyはコレ 10/01/30
5.
●
詳しくはWebで!! ● http://www-igm.univ-mlv.fr/~lecroq/string/index.html 10/01/30
6.
skiptableの作り方
'A' 'B' 'C' 'A' 'B' 41 42 43 41 42 s[41] = 5 2 = 2 s[42] = 4 1 = 1 s[43] = 3 = 3 10/01/30
7.
ポイント ●
不一致だった場合に何文字skipできるかは、patternの 末尾の比較対象(+1?)の文字によって決まる ● 簡易実装では、256個の配列でskiptableを持っている ● 日本語どうすんの? ● widecharをつかうとskiptable大きすぎ ● ハッシュではコストが高すぎ ● multibyteのままだと泣き別れが発生する 10/01/30
8.
multibyte/widechar ●
マルチバイト ● 可変長 ● ASCII互換 ● EUC-JP、UTF-8 ● ワイド文字 ● 固定長(16bit/32bit) ● ASCII非互換 ● UTF-16(?)、UTF-32 ● 別にUNICODEじゃなくてもいいけどね 10/01/30
9.
PostgreSQLの場合 ●
src/backend/utils/adt/varlena.c ● widecharに変換 ● そもそもASCIIでも256個もskiptableいらないんじゃ ね? ● "ABCDEFG"をmod 4して"12301230"と考えても、ス キップする量は減るが成立する ● 文字列の長さでskiptableのサイズを決めている ● http://archives.free.net.ph/message/20080830.232111.faf51 ● http://github.com/postgres/postgres/commit/285966b76c1a 10/01/30
10.
'あ'
'い' 'う' 'え' 3042 3044 3046 3048 s[3042] = 4 = 4 s[3044] = 3 = 3 s[3046] = 2 = 2 s[3048] = 1 = 1 2 0 2 0 s[0] = 4 2 = 2 s[1] = = 5 s[2] = 3 1 = 1 s[3] = = 5 10/01/30
11.
Rubyの場合 ●
string.c:rb_str_index() ? re.c:rb_memsearch() ● マルチバイトのまま検索 ● 短かい文字列/UTF-8の場合/それ以外の場合でアルゴ リズムを分けている ● rb_memsearch_ss:たぶんrabin-karp ● rb_memsearch_qs_utf8 ● rb_memsearch_qs ● 泣き別れたらやりなおせばいいじゃない ● http://article.gmane.org/gmane.comp.lang.ruby.devel/8100 ● http://github.com/shyouhei/ruby/commit/e58adeae0f384a5 10/01/30
12.
rb_memsearch_qs_utf8(1) ●
UTF-8では0xe3がやたらとでてくる 'あ' 'い' 'う' e3 81 82 e3 81 84 e3 81 86 s[81] = 8 5 2 = 2 s[82] = 7 = 7 s[84] = 4 = 4 s[86] = 1 = 1 s[e3] = 9 6 3 = 3 10/01/30
13.
rb_memsearch_qs_utf8(2) ●
先頭byteの時は、文字全体からハッシュを計算する 'あ' 'い' 'う' e3 81 82 e3 81 84 e3 81 86 46 48 4a s[46] = 9 = 9 s[48] = 6 = 6 s[4a] = 3 = 3 s[181] = 8 5 2 = 2 s[182] = 7 = 7 s[184] = 4 = 4 s[186] = 1 = 1 10/01/30
14.
Pythonの場合 ●
Objects/stringlib/fastsearch.h ● http://effbot.org/zone/stringlib.htm ● Boyer-MooreとBloom Filterの合わせわざらしい ● イニシャルコストとメモリ効率はよさそう ● 長い文字列はどうか ● 但し内部コードはUTF-16(or32)に限る 10/01/30
Descargar ahora