単純な速度テストでのTelerikOpenAccessとSubSonic(「どちらが優れているか」ではない)

StackOverflow https://stackoverflow.com/questions/9385950

質問

SubSonic 2を5年ほど使用していて、とても気に入っています。ただし、過去6か月間、私はSubSonic3または同様のORMツールに移行するというアイデアをいじっていました。私の会社はTelerikのツールをたくさん使っているので、OpenAccessを試してみようと思いました。構成した後、Usersテーブルの情報(最大30レコード)を使用してRadGridをロードするという非常に基本的なタスクを試してみることにしました。

つまり、グリッドのOnNeedDataSourceイベント内には、次のものがあります。 ジェネラコディセタグプレ

それを構築してページを実行した後、1607ミリ秒かかったことを吐き出します。ただし、ページを更新すると、0秒として戻ります。 (なぜ?)

次にSubSonicコードを入力します: ジェネラコディセタグプレ

コードを初めて実行すると、171ミリ秒かかったと表示されます。ページを更新した後、60〜70ミリ秒かかったと報告されています。

それで、私の質問は次のとおりです。 OAが最初の訪問で読み込まれるのにかなり長い時間がかかるのに、ページが更新されるたびに読み込まれるのに0秒かかるのはなぜですか。 SubSonicは最初の訪問ではかなり高速ですが、ページの更新ごとに最大65ミリ秒かかりますか?

これが「基本的な」質問である場合、またはパフォーマンスを適切にテストしていない場合は、お詫び申し上げます。この方法を改善する方法があれば、アドバイスをいただければ幸いです。

ありがとう、 アンドリュー

役に立ちましたか?

解決

OpenAccessには、OpenAcccessContextを初めて作成したときに作成される内部データベースオブジェクトがあります。基本的に、すべてのデフォルトを計算し、キャッシュを作成し、他のインフラストラクチャオブジェクトを初期化します。作成されるとすぐに、内部静的ディクショナリに保存されます(connectionIDがキーになります)。

作成された他のすべてのコンテキストは、その内部オブジェクトを使用し、オーバーヘッドはまったくありません。1600ミリ秒は少し高いと言われていますが、マッピングタイプを変更することを検討してください(xmlが最適で、パフォーマンスの面で)。

最適化は、モデルがアプリケーション開始ハンドラーで初期化されていることを確認することです。次のコードでうまくいくはずです。 ジェネラコディセタグプレ

編集:フォローアップとして、0ミリ秒と表示されますが、これは実際にはクエリの実行時間ではありません。クエリが返すのは、後で実行されるIQueryableです。実際のデータを取得するには、ToList()を呼び出す必要があります。

他のヒント

その理由は、OpenAccessでデータベースを開くのにSubSonicよりも時間がかかるためである可能性があります。ロード時間を測定する前に、データベースを開くためだけにカウントを取得するなどの簡単な操作を実行してみてください。SubSonicでも同じようにします。 ジェネラコディセタグプレ

トーマス

これがトピックから外れているかどうかはわかりませんが、私は過去数年間、SS2とSS3を使用して貢献してきました。 オーバーホールを完了し、SS2にMsAccessProviderを追加し、SS2とSS3に列挙型ジェネレーターを追加しました(これらはコミットされ、プロジェクトページに表示されます)。

また、SS3用の独自のキャッシュフレームワークをまとめました。これにより、任意の一意のインデックスによって参照されるデータベース内のテーブルからのデータの自動選択的キャッシュが可能になります。テンプレートベースのWebページ生成用のルックアップデータをキャッシュし、SS3LINQルックアップを使用した約2分からほんの一瞬に応答を改善することができました。(これは公開していません)

SSのユーザーの注意を引くために、このようなものをどこに投稿すればよいかわかりません。ソースへのコミットと未解決の問題のクローズは、まったくゼロの応答を生成しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top