CPANモジュール低速化と高速化事例
TIME rest time current/total
TopicsPlaceHolder

CPANモジュール低速化と高速化事例

Gotanda.pm #5

Jun 24th, 2015

Profile

songmu

Mackerel Logo

 

YAPC::Asia 2015で話します

Mackerel開発におけるScalaとGo、そしてPerl

CPANモジュール低速化

SQL::Mackerの場合

Tengの内部で使われているSQLクエリビルダー

my pull requests

join condition accepts Hash

https://github.com/tokuhirom/SQL-Maker/pull/20
JOINのconditionを文字列だけじゃなくてHashRefも指定できるようにした

$stmt->add_join(user => {
    type => 'inner', table => 'config',
    condition => 'user.user_id = config.user_id'});
# こうも指定できるように
$stmt->add_join(user => {
    type => 'inner', table => 'config',
    condition => {'user.user_id' => 'config.user_id'});

cares asterisk after table. eg. 'foo.*'

https://github.com/tokuhirom/SQL-Maker/pull/21
foo.*"foo"."*" とquoteしてしまっていたのを "foo".*になるのを修正

feature: can specify alias in SQL::Maker#select

https://github.com/tokuhirom/SQL-Maker/pull/22
SELECT foo AS bar FROM hoge みたいなクエリを吐けるように

appropriate handling on scalar reference in SQL::Maker#select

https://github.com/tokuhirom/SQL-Maker/pull/24
一つ前のp-rでTeng毎ぶっ壊れていたので修正

結果

SQL::AbstractとSELECT文の生成速度が逆転…。

SQL::Macker 1.11 vs SQL::Abstract 1.81

insert
                 Rate SQL::Abstract    SQL::Maker
SQL::Abstract 24561/s            --          -70%
SQL::Maker    82707/s          237%            --

update
                 Rate SQL::Abstract    SQL::Maker
SQL::Abstract 14354/s            --          -61%
SQL::Maker    36885/s          157%            --

delete
                 Rate SQL::Abstract    SQL::Maker
SQL::Abstract 26796/s            --          -53%
SQL::Maker    57420/s          114%            --

select
                 Rate SQL::Abstract    SQL::Maker
SQL::Abstract 22865/s            --           -1%
SQL::Maker    23209/s            2%            --

SQL::Macker 1.12 vs SQL::Abstract 1.81

insert
                 Rate SQL::Abstract    SQL::Maker
SQL::Abstract 24000/s            --          -69%
SQL::Maker    78195/s          226%            --

update
                 Rate SQL::Abstract    SQL::Maker
SQL::Abstract 13964/s            --          -62%
SQL::Maker    36885/s          164%            --

delete
                 Rate SQL::Abstract    SQL::Maker
SQL::Abstract 26936/s            --          -52%
SQL::Maker    56552/s          110%            --

select
                 Rate    SQL::Maker SQL::Abstract
SQL::Maker    15175/s            --          -33%
SQL::Abstract 22587/s           49%            --

orz

学び

CPANモジュール高速化

Arkの場合

typester作成のWAF。鎌倉のK社方面でよく使われている。

v0.22 to v1.20

結果

学び

以上

We are Hiring

hatena