memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

文字列中にある文字列が含まれる個数をカウントする

プログラムを作っていて表記なようなルーチンが必要になりました。gistを探せばすぐ出てきそうですが作ってみました。

Rubyらしいプログラムはなかなかできないもので。。。1文字ずつベタで検索するプログラムを作ったのですが、サーチならinclude?やindexがあるじゃん、ということで作ったのがプログラム1。基本パターンしかテストしていないので抜けがあるかもしれません。

■プログラム1(String#indexを使った例)

で、プログラム1を作りながら、こんな面倒なことをしなくてもsplitで分離して個数を調べればいいじゃん。。。と思って作り直したのが以下。作ったというにはおこがましいくらいです。ただライブラリ機能を利用させてもらっているだけです。

■プログラム2(String#splitを使った例)

で、処理時間を計測してみました。

250単語くらいの英文を対象にtheの個数を数えてみました。その処理を10万回ループした時間が以下です。

プログラム1 4.1秒
プログラム2 2.5秒

Rubyであれこれやるよりライブラリ機能を利用した方が早い。。。ということなのだと思います。