作曲家2へのアップグレード


PHPを使って開発するなら、あなたが遭遇した確率は非常に高いですComposer , PHP依存関係マネージャ.あなたは私のようなライブラリをインポートするためにそれを使用した可能性がありますpassword validator あなたのプロジェクトに、またはそれのような何かで完全に新しいプロジェクトを開始するために使用Symfony .
作曲家は2012年3月に登場した最初のAlphaリリースで長い歴史を持ち、2016年4月にようやく安定したリリースになります.それ以来、定期的なリリースは、セキュリティとパフォーマンスの理由のために最新の状態に保つが、何か新しいものが必要だった.検索するならGoogle for 'composer memory issues' , あなたは約1000万の結果を得るComposer project itself . それは大きなプロジェクトに取り組んでいる人々のための大きな悩みです.
これは、2020年10月24日にリリースされたプロジェクトによってレビューされて、対処されましたComposer 2.0 . これは50 %以上のパフォーマンス改善をもたらすと言われています.これは、CPUとメモリ性能の向上を追加し、パッケージの並列インストールを許可することによってこれを行います.
このリリースは基本的に作曲家1を作ります.Xは、エンドの人生を(そして、彼らのブログのポストで言及されている)ので、高度な任意の環境のために助言される予定です.私は開発者の小さなチームを管理し、サーバーの小さなクラスタを管理すると、私は私たちの依存関係で起こっていることに目を離さないようにする必要がありますし、彼らは私たちのアップグレードの前に動作することを確認します.だからここに私の調査結果.

パフォーマンス


パフォーマンスは私にとって大きなことです.私がアップデートすることができて、そして/または、より速く展開するならば、それはより低い時間です.貯金!私もティンカーカーとシンフォニーと遊ぶのが好きです、それで、私は通常新しいパッケージをチェックするか、新しいsymfonyプロジェクトをつくっています.それで、一つの実行チェックアウトを比較することでパフォーマンスをチェックすると思いました.
  • My Password Validator project
  • Symfony website skeleton
  • Install Laravel
  • それぞれのインストールを実行する前に、composer clear-cache ベンチマークは、作曲家を介して完全に新鮮なインストール.それぞれのプロセスを実行する時間は秒単位でdatecomposer require 要素を開始し、終了時刻を取得します.これは、テストする最も科学的な方法ではないかもしれませんが、それはあなたが得るつもりである実世界ユースケースに近いです.

    パスワードバリデータ


    これは、パスワードのエントロピーをチェックするための本当に小さなユーティリティライブラリです.それは多くのサイズの面ではないとしてダウンロードして高速にする必要があります.これは
    date && composer require garybell/password-validator && date
    
    作曲家v 1を使用して、これは10秒で完了しました.図書館の大きさを考えれば予想以上に長くなったが、問題はなかった.作曲家V 2は、この時間を1秒に持ってきました.90 %削減、些細なシナリオのために.

    Symfonyウェブサイト骨格


    単純なインストールではなく、これは完全なプロジェクトを作成します.それは多くの追加が含まれますrequire コールのため、インストールに関してはかなり集中的です.これは
    date && composer create-project symfony/website-skeleton && date
    
    Symfonyウェブサイトスケルトンプロジェクトの性質のために、これは少なくとも作曲家のための速いプロセスでありませんでした.作曲家V 1はかなり印象的な50秒でタスクを処理しました.予想より速い.V 2へのスワッピングは、この時間を約60 %、21秒まで減少させました.これは、新しいプロジェクトの現実世界の状況です.あなたがターミナルを完了するのを待っているとき、それは常により遅いようです、しかし、それらの21秒はかなり速く行きます.

    ラーラベル


    Laravelインストーラのインストールを必要とし、それ以外のコンポーネントをダウンロードするために作曲家を使用するLaravelインストーラ自体を使用して作成するために、作曲家を介してRolavelのインストールは、特に興味深いユースケースです.これは
    date && composer require laravel/installer && ./vendor/laravel/installer/bin/laravel new blog && date
    
    このようにしてインストールされたのは、ラヴァルエルをグローバルにインストールするのではなく、作曲家V 2が衝突しないようにするためである.0テストが実行されました.
    ララベルは、それが人気があるとして、デジタル機関と熱心に世界中で使用されるつもりです.新しいラーラヴェルのための作曲家V 1プロセスは103秒を要しました.そして、それは終わらせるために終末を待つとき、生涯のようでした.これを読んでいるウェブ職人は、これが私のテストで30秒に落ちたことを非常に喜ばせます.70 %以上の改善.

    性能の結論


    作曲家のバージョン2で行われた改善は、彼らがアップグレードするときに誰にでも大幅な改善をもたらすつもりだと言うのは公正です.symfonyまたはlaravelで新しいプロジェクトを作成することはかなり速くなりそうです、そして、既存のプロジェクトに新しい一つのパッケージを加えるとき、少しの遅れもありません.
    私も、私が私のDay仕事のために働いているコードベースのバージョン間のパフォーマンスを比較しました.現在開発中の電子商取引ソフトウェアのかなり複雑な部分であり、インストールするためにほぼ90のパッケージがあります.作曲家V 1の下で、これはすべてのパッケージを得るために68秒かかりました.私の開発チームはただ待っていて、何もしていません(彼らは前に仕事を考えているかもしれませんが、待っている間に気を散らすかもしれません).私が走ったときcomposer install 使用composer.json V 2の下のファイル、この時間は15秒に落ちました.巨大な改善、およびスケールの任意の合理的なレベルで大量に測定可能です.

    作曲家のアップグレード


    作曲家のアップグレードは、ドキュメンテーションに基づく簡単なプロセスのように見えます.それは走ることの単純なケースでなければなりませんcomposer self-update --2 そして、それを走らせてください.しかし、私のバージョンの作曲家は誤りを返しましたCommand "self-update" is not defined .
    このために作曲家がどこにインストールされているかを調べ、インストーラを使って.phar ファイルがあります.このプロセスは以下のようになった.
  • ランwhich composer (出力/usr/bin/作曲家)
  • ランphp -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
  • ランsudo php composer-setup.php --install-dir=/usr/bin --filename=composer
  • 一旦それが完了したらcomposer --version 返されるComposer version 2.0.4 2020-10-30 22:39:11 . 作曲家は、更新されていたが、それは作曲家のダウンロードページを見て作られたように簡単ではなかった.

    全体評決


    作曲家のアップグレードは私が望んでいたほど簡単ではなかったが、パフォーマンスの改善は絶対に恒星です.場所で同じコマンドを保つことは大きな決定でした、それで、自動化された配備または彼らが予定していた他の仕事をもつ誰でも、戻って、変わる必要はありません.
    私は私のテストを実行していたとき、またはアップグレードとこの投稿されている間に短い時間で作曲家と一緒に作業したときに、すべての問題に気づいたことがない.それは問題がないと言うことでありません、そして、若干のものは壊れませんでした-私は、ちょうど彼らを見つけませんでした.
    私の最大の驚きは、PHP 5.3のために作曲家の中にまだサポートがあるということでした.Xバージョン.PHP 5.6はセキュリティ保護のためにさえ、ほぼ2年の間サポートされています.私は、Red HatがPHP 5にパッチを加え続けていることに感謝します.彼らの顧客のためのX、しかし、私は人々が彼らの古いシステムを保つのを奨励するだけで、作曲家のためにそれらのバージョンについているのを感じます.
    PHP 5.3は6年以上サポートされていませんので、一般的なパッケージのショッキングをサポートしています.サポートされていない容量でPHP 5.3で動くことができたなら、私はそれに問題がないでしょう.以下は、作曲家2の可用性を発表するブログ投稿からの断片です

    Composer 2.0 supports PHP 5.3+, which is at this point very outdated and makes the code quite hard to maintain in places. We went through the effort to make sure every Composer user can upgrade to Composer 2...


    これは、この互換性を確保するために作られたアーキテクチャの妥協があったことを意味します.PHP 2.2のサポートが低下したかどうか(実際には7.1.3以前であるかどうかにかかわらず)、PHP 5のサポートが低下したかどうかを確認するのは面白いでしょう.

    結論:tlドクター


    あなたがバージョン1であるようにそれを使用しますが、目立つ、そして、簡単に測定可能なパフォーマンス改善の利益で.