Cache::Memcached::Fast の weight をでかくすると地球がやばい

Cache::Memcached::Fast はデフォルトで consistent hashing してくれる。で、servers に weight を渡すと振り分けの重み付けをしてくれるわけだが、これを ketama_points に大きな値を指定し、かつ 100 とかにして new したら死ぬほど遅くなった。
とある環境でいきなりインスタンス生成がクソ遅くなって、なかなか原因がわからなくて超ハマったのでメモ。
考えてみれば ketama るので、超巨大な配列が内部で作られるから当然っちゃ当然。

デフォルトは ketama_points => 0 だけど、普通 200〜300 位を指定しているはず。

use strict;
use warnings;
use Benchmark qw(cmpthese);
use Cache::Memcached::Fast;

cmpthese 100 => {
    'little' => sub {
        Cache::Memcached::Fast->new({
            servers => [
                { address => 'zigorou', weight => 1.0 },
                { address => 'nekokak', weight => 1.0 },
            ],
            ketama_points => 300,
        });
    },
    'big' => sub {
        Cache::Memcached::Fast->new({
            servers => [
                { address => 'zigorou', weight => 100 },
                { address => 'nekokak', weight => 100 },
            ],
            ketama_points => 300,
        });
    },
}, 'all';

big の方は終わらない。