現在インターンでとある会社のアプリケーションのスタッフツールの速度改善を行っております。
環境はwindows(intel corei-5)、ASP.NET MVC5,VisualStudio2017,EntityFrameWork6.2,MySql.Data8.03です。
基本的に放置気味な感じで体感で表示して遅いなってところを直してみてといった感じの要求がざっくりしている内容である為、stopwatch.Start();
、stopwatch.Elapsed;
等のストップウォッチ系のプロパティを置いて実行速度を計って遅そうな箇所を調べていました。(あとはchromeの検証<network画面を見たりという感じです)
調べた結果やはり実行に時間がかかるのがDBとのやり取りで、2万件ほどある顧客の情報をListとして取ってくるといった処理には少々時間がかかっていました。
とは言ってもそれを画面に表示するのにかかる時間は大体5秒くらいで、表示やページングを除く、リスト取得のメソッドが実行されるまでには大体2.5秒ほどかかるものでした。なので言うほど改善するべき箇所か疑問です。ログにそのLINQ式をSQLとして吐き出してみたのですが、書き方もとんでもなく冗長な形になっていましたし、それをべた書きして実行するのもどうかと思いました。。
特に他の箇所では無駄なループが回っていたりするようには見えないですし、高速化するといっても構文レベルの問題ではないでしょうし困っています(緩いインターンではあるので別にアウトプットをそこまで求められているものではないのですが)。
C#(.NET MVC)のDB周りの高速化について調べていると、生のSQLを発行させることが一番速いといった記事をよく目にしました。しかし記事によっては誤差の範囲や、そこまで変わらないといったものも目にしました。
質問をまとめるとアプリケーションのパフォーマンスを上げる上でLINQ to Entitiesと生のクエリを書くことはそこまで違いが出るものなのでしょうか?
またサイトパフォーマンスを上げたい際はどのようなことに着目すればよいでしょうか?
抽象的な質問で申し訳ございませんがよろしくお願い致します。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。