読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます。新機能の詳細をご覧ください。
MicrosoftはASP.NET Coreの開発に多大な時間と開発パワーを費やしてきた。その結果、新しい機能をもつオープンプラットフォームが誕生し、大きな開発者コミュニティとのオープンな取り組みから恩恵を受けてきた。ASP.NET Coreは、WCF(Windows Communication Foundation)のような古い技術よりもパフォーマンスが優れていることを期待するだろう。ところが最近、そうではないと思われているようだ。これについて、もう少し詳しく見ていこう。
最近、開発者のErik Heemskerk氏は、ASP.NET CoreとWCFのパフォーマンスを調査した記事を書いた。彼の実験では、それぞれの技術を使って、単純なプロジェクトを用意して、「ローカルWebサーバーを立ち上げ、リクエスト作成、送信、デシリアライズ、レスポンス生成、返信、レスポンスのデシリアライズにかかる時間を測定した」という。
驚いたことに、ペイロードにシンプルなGUIDを使った場合、WCFは同等のASP.NET Coreプロジェクトと比べて約3倍高速だった。Heemskerk氏は、この違いは、ASP.NET CoreがJSONを使うのに、WCFがXMLにシリアライズするところにあるかもしれないと考え、ASP.NET CoreをXMLにシリアライズするようにした。結果は改善されたが、依然としてWCFの方がずっと高速だった。別のアプローチを試してみようと、Heemskerk氏はペイロードのサイズををもっと現実的なオブジェクトまで大きくし、ASP.NET CoreでMessagePackを使うようにした。これにより、最新のASP.NETはWCFよりも少し高速になったという。
しかし、話はこれで終わらない。開発者のJosh Bartley氏はHeemskerk氏の作業を調べて、ASP.NETの結果を改善するために他に変更できることはないか確認した。彼の分析によると、ASP.NETのベンチマークには、WCFコードの作業と比べて全く同じ作業が含まれているわけではないようだ。
したがって、ASP.NET Coreはパフォーマンスの点で一歩遅れているわけではない。もし最初のパフォーマンスが期待を満たしていなければ、最高のパフォーマンスを出すために、何らかの分析が必要になるだろう。パフォーマンス改善を試みるとき、大きな教訓は、適切な場所をベンチマークに選んで、適切な場所のコードが改善されるようにすることだ。
Rate this Article
- Editor Review
- Chief Editor Action