珠玉のダジャレ生成プロジェクトレポジトリ Rhymer
Docker で、
- mecab-unidic-NEologd で make された CSV を作ります。
- CSV ファイルから単語を PostgreSQL のデータベースに流し込みます。(
create-db.sh) - Happy rhyming!
準備
export PGVERSION=11 # or 10, 9, ...
docker-compose down
docker-compose up --build -d
docker-compose run app ./create-db.sh./create-db.sh で CSV からデータベースへデータを流し込みます。
これで select-word.rb のようにすると、Ruby の String オブジェクトに #dajare メソッドが生えます。
require './select-word.rb'
'した'.dajareランダムでその読み方で始まるダジャレが出力されます。
export PGVERSION=11
docker-compose down
docker-compose up --build -d
time docker-compose run app ./create-db.shのベンチマーク
PostgreSQL 11
1.03user 0.15system 0:18.60elapsed 6%CPU (0avgtext+0avgdata 47632maxresident)k 0inputs+8outputs (0major+25368minor)pagefaults 0swaps
PostgreSQL 10
1.00user 0.18system 0:18.11elapsed 6%CPU (0avgtext+0avgdata 45760maxresident)k 0inputs+8outputs (0major+25251minor)pagefaults 0swaps
PostgreSQL 9
1.01user 0.17system 0:19.43elapsed 6%CPU (0avgtext+0avgdata 45524maxresident)k 0inputs+8outputs (0major+25194minor)pagefaults 0swaps
docker-compose run app ruby benchmark-select.rbString.dajareは Ruby のコードで String に dajare メソッドをはやしたものを多数起動するものです。毎回データベースに接続し直すという雑な実装です。PostgreSQL selectは、それはあんまりなので1回だけデータベースに接続して、そのままSELECTを発行するベンチマークです。
PostgreSQL 11
user system total real
String.dajare 1.571993 0.133628 1.705621 ( 27.632465)
user system total real
PostgreSQL select 0.030765 0.012489 0.043254 ( 49.565850)
PostgreSQL 10
user system total real
String.dajare 1.603802 0.152695 1.756497 ( 28.066918)
user system total real
PostgreSQL select 0.017889 0.025146 0.043035 ( 50.333151)
PostgreSQL 9
user system total real
String.dajare 1.897162 0.184556 2.081718 ( 79.409097)
user system total real
PostgreSQL select 0.017323 0.045738 0.063061 (150.408147)
- mecab-unidic-NEologd (mecab の追加用辞書。しょっちゅう新しい単語が追加されている)