在CodeProject上看到一篇數據綁定的測試評論,該評論已經被MVP認可了,我對這樣的結果也感到十分的驚訝,看來,以後在寫代碼的習慣上要稍微有些修改了.
先給出測試的代碼:
- public void initList(DataTable dt)
- {
- DropDownList1.DataSource = dt;
- DropDownList1.DataTextField = "empName";
- DropDownList1.DataValueField = "empNumber";
- DropDownList1.DataBind();
- }
- public void initList2(DataTable dt)
- {
- foreach (DataRow r in dt.Rows)
- {
- DropDownList2.Items.Add(new ListItem(r["empName"].ToString(), r["empNumber"].ToString()));
- }
- }
- public void initList3(DataTable dt)
- {
- foreach (DataRow r in dt.Rows)
- {
- DropDownList3.Items.Add(new ListItem(r[0].ToString(), r[1].ToString()));
- }
- }
initList的效率比initList2和initList3的效率低可能十倍以上(太可怕了,我是沒有認真測試過,但是估計有點誇張),initList2和initList3的效率差不多,但是initList3的效率會比initList2的效率高些,因爲使用列號的代碼不用在綁定的時候綁定的名稱不用轉換爲對應的下標,並關聯的數據源中的數據.還有,使用列號的時候,會使用Cache的,但並不是每次都會用到.所以使用initList3的數據綁定纔是效率最高的.
小結
使用微軟的綁定方法效率就差這麼多,那些GridView和ViewForm控件怎麼辦?