ホームページ  >  記事  >  php教程  >  ASP.NET は PHP と競合しますが、速度の王者は誰でしょうか?

ASP.NET は PHP と競合しますが、速度の王者は誰でしょうか?

WBOY
WBOYオリジナル
2016-06-21 08:56:551138ブラウズ

9 月のプログラミング言語ランキングで歴史的な躍進を果たしたばかりの PHP ですが、Web 開発分野における最大のライバルは Microsoft .NET テクノロジをベースにした ASP.NET かもしれません。最近、Microsoft の Joe Stagner 氏が、PHP と ASP.NET のパフォーマンスを比較する一連の記事をブログに公開し、双方のプログラマーから多くの反響を呼びました。

Joe 氏は、このようなテストを継続し、実際のプロジェクトにとって可能な限り価値のある結論を得るために、より適切な方法を模索すると述べました。

Joe はブログで、一般的にパフォーマンス テストの目的は、一方が他方よりも速いことを証明しようとすることであると述べました。私は Microsoft に雇用されており、PHP と ASP.NET の両方をコーディングしています。私は .NET が登場する前から PHP を使用しており、どちらも大好きです。

つまり、どちらが優れているかを言うのは難しいです。私が PHP について良いことを言うと、Microsoft の同僚は私を批判する手紙を書きます。また、私が ASP.NET を支持するコメントをすると、PHP の友人は私を Microsoft 野郎だと言います。

私がこのテストを行ったのは、PHP のパフォーマンス (Windows 対 Linux、5.2 対 5.3) については人それぞれの意見があるものの、誰も明確なデータを与えることができないためです。

ASP.NET が PHP と競合するためのテスト環境は次のとおりです:

◆すべてのテストは同じマシン (4G メモリと 60G 7200 rpm ハードドライブを搭載した Toshiba Tecra M5) で実行されました。

◆Ubuntu 9 と Windows Server 2008 Standard Edition は、別々の (ただし同一の) ハード ドライブにインストールされます。

◆Linux は Apache2 を、Windows は IIS 7 をそれぞれの Web サーバーとして使用します。

◆どちらのオペレーティング システムも完全にパッチ適用またはアップグレードされています。

◆システムまたはランタイムの追加のパフォーマンス強化は行われていません。

実験結果から判断すると、Linux と Windows 上での PHP の実行パフォーマンスは異なります。

◆純粋なステートメントの実行は、Windows 上でより優れたパフォーマンスを発揮します。

◆Windows では関数呼び出しが高速になります。

◆オブジェクトの作成とアクセスは、Linux では PHP 5.2 の方が高速ですが、Windows では PHP 5.3 の方が高速です。

◆クラス ライブラリの呼び出しは Linux 上ではるかに高速です (たとえば、Ubuntu での暗号化は Windows よりも 3 ~ 5 倍高速です)。

Linux プラットフォームと Windows プラットフォームの比較

Linux でのファイル アクセスのパフォーマンスは Windows よりわずかに高くなりますが、Windows でのファイル コピーのパフォーマンスは Linux より 60% 遅くなります。これは、ACL の高度なセキュリティが原因である可能性があります。

Linux 上の MySQL へのアクセスは Windows よりもはるかに高速であり、Windows 上で PHP 5.3 を実行する状況はさらに悪くなります (ただし、以下の PostgreSQL の状況から判断すると、これは実装が不十分であるためであるはずです)。

2 つのプラットフォームでの PostgreSQL のパフォーマンスは非常に近いです (1000 回の操作の差は 0.06 秒以内です)。PHP 5.3 であっても PHP 5.2 であっても、Windows のパフォーマンスの方がわずかに優れています。

Windows 上の MS SQL Server にアクセスする PHP 5.2 のパフォーマンスは、Linux 上の MySQL にアクセスするよりもわずかに劣ります (現時点では、PHP 5.3 に対する SQL Server のサポートはありません)。

純粋な PHP の実行パフォーマンスに関しては、Linux と Windows はほぼ同じですが、これは、展開プラットフォームとして Linux または Windows を選択する際の決定的な要因にはなりません。アプリケーションを構築している場合は、PostgreSQL の方が良い選択かもしれません。両方のプラットフォームで非常に優れたパフォーマンスを発揮するためです。

アプリケーションで MySQL を使用する必要がある場合、Windows を選択するには、スケーラビリティの問題を早期に計画する必要があります (個人的には、Sun が Windows 向けに MySQL のパフォーマンスを最適化する可能性は低いと考えています)。

PHP の SQL Server ドライバーの最初のバージョンは、MySQL や PostpreSQL よりも少し遅いですが、これは問題にはなりません。ドライバーの 2 番目のバージョンが開発中であり、パフォーマンスが向上します。

Joe の意見では、全体的に、PHP チームと IIS チームは実行パフォーマンスの点で非常に成功しています。次に、それぞれのパフォーマンスを最適化するには、さまざまなオープン ソース プログラム (Drupal、WordPress、Joomla など) のチームが必要です。プラットフォーム。

ただし、ファイル コピー操作を除いて、ASP.NET はパフォーマンスの点で PHP よりも優れています (Linux または Windows にデプロイされているかどうか):

Linux 上の MySQL へのアクセスのパフォーマンスは、(通常のデータ型と SELECT ステートメントを使用した) Windows 上の SQL Server へのアクセスよりもわずかに優れています。しかし、ここでの違いはほとんど無視できます。

オブジェクトの使用法、クラス ライブラリの呼び出しなどの ASP.NET (C#) 操作は、PHP よりもはるかに高いパフォーマンスを発揮します。このテスト結果について、ジョーは次のように付け加えました。

私の PHP 友達や Linux 関係者の中には、飛び出してきて私のテストと結果に反論する人もいると思います。

私は、このようなパフォーマンスの比較に高度な最適化オプションを含める必要があるかどうかを考えてきました。ただし、.NET には、マルチスレッド、非同期リクエスト、および使用できるさまざまなキャッシュ方法もあります

ご注意ください - 私は「ASP.NET の方が速いから PHP を使うべきではない!」と言っているのではなく、PHP は単純すぎるため、ASP.NET のような一部の高度なアプリケーションを難しくすると考えています。プロジェクトの早い段階で複雑さを学習します。

私にとって、PHP で最もエキサイティングなことは、その言語やプラットフォームではなく、何千人もの賢い PHP 開発者と、さまざまな優れたプロジェクト (Drupal、Joomla、WordPress、PHPBB、Nuke など) です。

Windows と Linux 上の PHP のパフォーマンスは同じレベルになったと言えます。長年楽しみにしていた Windows 用の PHP クラス ライブラリをついに作成できるようになりました。

Joe はテスト コードも公開しました。このテストの結果に疑問がある場合は、自分で実験を行うか、独自のテストコードを書いて実験することができると述べました。

記事が公開された後、多くのネチズンがこのテスト結果に対して意見を表明しました。 Joe は基本的に要点に 1 つずつ答えました:

「Visual Studio IDE が好きなので ASP.NET を使用しています。」 – 個人的には、Visual Studio が最も生産的な開発ツールだと思います。ただし、PHP には優れたオプションがあります。私は Zend Studio、PHPEd、Komodo、Delphi for PHP を使用していますが、どれも優れています。私は Eclipse が嫌いですが、Zend はこの分野の PHP 開発用に多くの拡張機能も提供しています。

ASP のパフォーマンスを比較する必要があります - いいえ、ありがとうございます。古い ASP と現在の PHP および ASP.NET の間には大きな隔たりがあります。この比較を行うと、新しいプロジェクトの開発に ASP を使用することを示唆しているように見えますが、これを行うことは強くお勧めしません。

32 ビット システムと 64 ビット システムの比較

32 ビット システムと 64 ビット システムの比較 - これらのテストは、64 ビット システムでのパフォーマンスの違いを示すことを目的としたものではありません。今後のテストでは 64 ビットのシナリオを追加する予定です。

「PHP はとんでもなく醜い」 – ああ、私はそうは思いません。昔の ASP はもっと醜かったです。本当にひどく醜い PHP コードを書くこともできますし、本当に醜くてひどい C# や VB コードを書くこともできます。同様に、エレガントな C++ スタイルの PHP を作成することもできます。すべては開発者のスキルにかかっています。

テストは Windows 上の Apache を使用して行う必要があります。Apache は Linux 上のサーバーですが、Windows 上で IIS 7 を使用しないと損失が大きすぎると思います。

「セキュリティを損なうことなく、Win2K8 でファイル コピーのパフォーマンスを高速化する方法はありますか? - それは不可能のようです。」これには Windows サーバー上の ACL システムが関係していると思います。将来的には、データ ストリーム経由でファイルを読み取るパフォーマンスをテストする可能性があり、一部のパフォーマンスが向上する可能性があります。ただし、Web アプリケーションは通常、大量のファイルをコピーするようにプログラムされていません。

「PHP はこれまでも、そしてこれからもセミプロフェッショナル環境である」 - この発言はナンセンスです。 PHP プラットフォームにはプロフェッショナルで高品質なアプリケーションが数多くあり、私がとても尊敬する開発者もたくさんいます。プロ意識は開発者の問題であり、PHP や ASP.NET の問題ではありません。

「オペコード キャッシュなしで PHP を比較するのは不公平だと思います。.NET はコンパイルされて実行されますが、PHP は毎回ページを解釈して「コンパイル」する必要があります。」 - このテストが完了していない可能性があることに同意しますが、反対ですこのロジック。 PHP をテストする方法は、PHP をダウンロードしてインストールするのと同じです。私の仮想ホストにも、オペコード キャッシュがインストールされていません。 PHP にはこの機能がないため、ASP.NET にこの機能が付属しているという事実は、テストが不公平であることを意味するものではありません。しかし、この要件は合理的であり、新しいテストを準備しています。

「PHP が『プロフェッショナル』言語ではないと言うのは意味がありません。なぜなら、ほとんどすべての最大規模のサイトが PHP で構築されているからです。」 - この声明は意味をなさないが、これらのサイトは「ほとんどすべての」言語であると言えます。 " PHP を使用して構築することも間違っていました。あるものもあれば、そうでないものもあります。

このデータを見て、ASP.NET に対する信頼が 2 倍になってくれれば、とても嬉しく思います。 Web アプリケーションの開発には .NET がより良い選択であると考えていなかったら (少なくとも他のプラットフォームでは)、私は Microsoft で働いていないでしょう。

しかし...これらのデータを理由に PHP を無視するのは間違っており、単純です。

純粋に技術的な観点から見ると、.NET は PHP よりもはるかに強力だと思いますが、これは PHP が十分強力ではないという意味ではありません。私の意見では、PHP のパワーは、利用可能な多数のアプリケーションやフレームワークに反映されています。

約 1 週間後、ジョーは 2 回目のテストの結果を発表しました。前回のテストと比較して、2 回目のテストでは主に次の 2 つの変更点があります:

Linux と Windows にオペコード キャッシュをインストールし、ほとんどのテストを再実行しました。

いくつかの依存関係の問題により、PHP 5.3 + APC のテスト プラットフォームは Debain 5 オペレーティング システムになりました。

2 回目のテストとその結果について、ジョーは次のように説明しました。

結果から判断すると、Ubuntu と Debian で PHP を実行する場合のパフォーマンスの差はごくわずかです。一部のアイテムの性能は若干向上しており、25%向上したものもありますが、全体的には思ったよりも効果が低いです。

APC を使用すると、一部の項目の動作が遅くなりますが、これはマシンによる単なるエラーだと思います。表に示されている結果は最初の結果ではなく、キャッシュ ヒットを確認するために 2 回更新した後に取得された結果であることに注意してください。

現在のテストは非常に公平だと思います。

空のループ テストと空の関数の実行は、言語またはプラットフォームの根本的な消費を反映するため、非常に重要です。これは、ページ送信などのパフォーマンスのオーバーヘッドに加えてパフォーマンスの消費となるため、重要な考慮事項です。

私の PHP 友人の何人かもこのテストの正確さを認めていましたが、非常に洞察力に富んだ追加を加えてくれました:

ASP.NET のパフォーマンス リードは私には何の影響も与えません。 PHP が私のお気に入りであり、私のアプリケーションは十分に高速です。はい、基本的なパフォーマンスの点では ASP.NET の方が高速ですが、私のアプリケーションは優れたページ実装と JavaScript の実践によってこのパフォーマンスを補うことができます。

さらに、前回の実験の結果によると、Windows プラットフォームで PHP を実行すると、MySQL とファイル アクセスにいくつかのパフォーマンスの問題が発生することがわかりました。Microsoft の多くのチームが私から関連情報を入手しました。このデータが目に見える改善につながることを願っています。

ジョーは、誰もがより公平でより意味があると考えるテスト シナリオを収集すると言いました。彼が計画しているテスト プロジェクトは次のとおりです:

◆実際のページのテスト: ループ、ホットおよびコールド呼び出し、オブジェクト操作はテストの一種ですが、ページ全体のプレゼンテーションも意味のあるテストです。

◆負荷テスト: どの環境が同時により多くのリクエストを処理できるか。

◆負荷テストにおいて、どちらの側のパフォーマンスの低下が早くなるか。

◆さまざまな状況下での 64 ビット プラットフォームのパフォーマンス。

Linux および Windows プラットフォームでの PHP のパフォーマンス テストは中国でも実施されています。 InfoQ は、Microsoft が WordCamp China 2009 カンファレンスで Cordson と協力して実施したパフォーマンス評価の結果を公開したと報じました。それは、Windows Server 2008 + IIS 上で PHP を実行し、平均応答時間、1 秒あたりに処理されるリクエスト数、データ スループットからのパフォーマンス評価でした。その他の利便性は、Linux + Apache ホスティングよりも優れています。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。