2

さまざまな Ruby フレームワークでいくつかのパフォーマンス テストを実行してきましたが、Espresso はどのフレームワークよりもはるかに高速であることがわかりました。私は Sinatra で書かれた大規模なコードベースを持っており、アプリをスピードアップしたいと考えており、Espresso の基礎となるエンジンを抽出して Sinatra にプラグインすることができるかどうか疑問に思っていました. 誰もこれについて考えたことがありますか?どちらもRackをベースにしていることは知っていますが、パフォーマンスの違いを実際に説明するものは何ですか?

4

2 に答える 2

3

Espresso を簡単に見てみると、再利用可能なより深い「エンジン」よりも、そのシンプルさのために高速であると言えます。

Sinatra または Rails で実行されている Web サービスは、リクエスト データの処理と準備の際に、もう少し抽象化を使用するため、メソッド呼び出しがいくつか増えます。これにより、Espresso の単純なフレームワークと比較すると、オーバーヘッドが追加されます。

Sinatra から Espresso への転送は、Sinatra のブロックベースのルーティングよりも直接的にメソッドを公開する Espresso の DSL を使用するための変換になります。Sinatra ルートを Espresso に簡単に接続することはできません。これは、速度差の主な原因であるシンタトラのルート処理を引き続き使用することになるためです。

実際には、10 ミリ秒未満の応答時間で非常にパフォーマンスの高いサービスを作成しようとしている場合にのみ、速度の違いが問題になります。そのためには、リクエスト処理フレームワークだけでなく、システムの他の部分も高度に最適化する必要があります。実際には、ほとんどのアプリケーションでサーバーからの合計応答時間のわずかな割合しか消費しません。

于 2013-05-23T19:55:39.423 に答える
1

ニールの答えは十分に包括的です。

Espresso は、設計上、ロード時にほとんどのルーティング処理を行っていることだけを付け加えておきます。

そして実行時に、Ruby メソッドである一致するアクションにリクエストを直接渡します。

また、Espresso は、特定のニーズに合わせて最適化された独自の URL マッパーを使用しています。

Sinatra 内で Espresso のエンジンを使用することについては不明です。

Sinatra の DSL を Ruby メソッドに変換する「簡単な」方法を見つける方が簡単かもしれません...

于 2013-05-24T15:50:22.973 に答える