ASPXページのListViewでデータバインド時にEval()を使わないほうがいい?
2016/02/17
よく見かける例文では、殆どの場合Eval()を使ってテーブルカラムを指定しデータバインドしています。
でもEval()を使うと遅くなる、Eval()は悪だ、という話しを目にして、じゃあ早く処理される方に変えようと思いました。
(マイクロソフトも、リフレクションを使ってるのでEval()は比較的遅いと言ってます)
以下はよく目にする例文です。ラベルのテキストにcompanynameという名前のテーブルカラムを指定しています。
<asp:Label ID="label01" runat="server" Text='<%#Eval("companyname")' />
Eval()コマンドを使用するとstring等の文字列を評価する為にリフレクションを使うそうで、このリフレクションがダメみたいです。
ということで、少しでも早くなるんだったらEval()じゃないコマンドを使おうと思い、見つけたのが以下の文です。
<asp:Label ID="label01" runat="server" Text='<%# ((DataRowView)Container.DataItem)["companyname"] %>' />
変更した後、テストしてみた
約10万件のデータに対しSELECT文のWHEREの条件でデータカラム10個をEval()じゃないコマンドで、ASPXページに結果を返してみた。
検索結果がほんのり速くなった気がするが、実感できるほどじゃなかった。。。
でも、余計な負荷がかからないんだったら、こっちの方が良いですね。
スポンサーリンク
スポンサーリンク