【訂正】PHPでのUserAgentパーサ(ブラウザ判定)ライブラリのベンチマーク

PHPでのUserAgentパーサ(ブラウザ判定)ライブラリは何がいいかベンチマークしてみたへの補足および訂正です。

ベンチマーク環境

  • XAMPP 1.8.3-4 for Linux (32bit)
    • PHP 5.5.11
      • Zend OPcache v7.0.4-dev

ベンチマーク結果

1つのUserAgent文字列からブラウザの種類などを判定する処理についてのベンチマークですが、処理する文字列により処理時間がかなり変わるようです。

以下のグラフは左が前回のもの、右が今回の別の文字列のものです。

timeベンチマークのグラフ timeベンチマークのグラフ

前回はCrossjoin\Browscapが非常に速かったのですが、今回はbrowscap-phpとそれほど違いはありません。

というわけで、1つだけでなく425個の異なるUserAgent文字列を処理した結果は以下のようになりました。なお、get_browser()関数はあまりに遅いので除外しました。

処理時間:
timeベンチマークのグラフ なんとCrossjoin\Browscapがbrowscap-phpより遅くなってしまいました。

最大使用メモリ:
memoryベンチマークのグラフ メモリについてはbrowscap-phpがもっとも消費することは変わりませんでした。

実際の数値:

{
  "crossjoin-browscap":{"time":27.748618125916,  "memory":1572864},
  "browscap-php":      {"time":19.118434906006,  "memory":33030144},
  "ua-parser":         {"time":0.38058090209961, "memory":786432},
  "woothee":           {"time":0.032510995864868,"memory":786432}
}

結論

Crossjoin\Browscapとbrowscap-phpの処理速度は状況(プラットフォームや処理するUserAgent文字列)により結果が変わります。Macでもやってみたのですが、その場合は、Crossjoin\Browscapが2倍以上速かったです。ただし、Crossjoin\Browscapの方がメモリ消費が少ないのは変わらないようです。

woothee-phpは安定して速く、メモリ消費も少ないようです。

ベンチマークはできるだけ実際の環境に近い条件で実施しましょう。

Date: 2014/11/07

Tags: php, benchmark