composer searchが速くなってた

Posted by Hiraku on 2013-03-28

composer searchが非常に遅い件 - 泥のように

って記事を以前書きましたが、最近Composerをアップデートしたところ、数秒程度でパッケージを検索でき、メモリもあまり消費しないようになっていました。

composerの遅さにうんざりしている人は、composer self-updateで最新版までアップデートすればいいと思います。バージョンが何故か番号でないので、「バージョンが○.○.○なら速いバージョンです!」と言えないのがつらいですが、とにかく最新版は速くなってます。

なぜ速くなったのか

昔のバージョンではpackagist.orgのリポジトリ定義jsonファイルを全部ダウンロードし、それをarrayに復元してメモリ上に全展開(array_merge)して、検索クエリで一つ一つのパッケージ属性をstrpos()で検索するという、非っ常~~~に効率の悪いことをやっていました。

そんなわけで、リポジトリ検索はクソ遅いし、パッケージインストールもクソ遅いし、検索コマンドを打つとメモリが確保できないと言って落ちる(PHPのデフォルトメモリ制限に引っかかる)し、いいことなんもない、composer使えない子、これだからPHPerは~(とばっちり)、みたいな状態だったのです。

GitHubでコミットログ(このへんとか)を見たところ、ローカルで検索するのではなく、packagist.orgのパッケージ検索Web APIを使って検索するように変わっていました。packagist.orgはきちんとSolrによる全文検索が実装されていて、高速に検索結果を返すことができます。

この変更により、省メモリで高速なパッケージ検索ができるようになりました。妥当な変更だと思います。

keyword: COMPOSER

PHPの最新記事