程序执行效率为何如此低下呢?
2008-07-18 12:25
211 查看
昨天新项目魔兽资料库上线测试,反馈都说技能那块速度有点慢,看了一下,的确是,用EQATEC分析了一下,结果如下:
很显然,问题出现在SqlDataProvider.GetItemInfo方法上面,这个方法的代码如下:
public ItemInfo GetItemInfo(int itemID)
{
using (SqlConnection connection = GetSqlConnection())
{
SqlCommand cmd = new SqlCommand("Proc_Item_GetModel", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ItemID", SqlDbType.Int).Value = itemID;
ItemInfo item = null;
connection.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
item = LoadItemInfoFromDataReader(reader);
}
reader.Close();
reader.Dispose();
cmd.Dispose();
connection.Close();
return item;
}
}
此方法平均用时84ms,而被调用的两个方法用时均不到1ms,可是这一段程序,代码上我已经没办法优化了,感觉问题应该是出现在cmd.ExecuteReader上面,也就是说,问题出在从数据库取数据上面,可是,这个存储过程是很简单的,就是一个select,目前数据库记录,也就是2W多条。
问题出在哪里呢?
很显然,问题出现在SqlDataProvider.GetItemInfo方法上面,这个方法的代码如下:
public ItemInfo GetItemInfo(int itemID)
{
using (SqlConnection connection = GetSqlConnection())
{
SqlCommand cmd = new SqlCommand("Proc_Item_GetModel", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ItemID", SqlDbType.Int).Value = itemID;
ItemInfo item = null;
connection.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
item = LoadItemInfoFromDataReader(reader);
}
reader.Close();
reader.Dispose();
cmd.Dispose();
connection.Close();
return item;
}
}
此方法平均用时84ms,而被调用的两个方法用时均不到1ms,可是这一段程序,代码上我已经没办法优化了,感觉问题应该是出现在cmd.ExecuteReader上面,也就是说,问题出在从数据库取数据上面,可是,这个存储过程是很简单的,就是一个select,目前数据库记录,也就是2W多条。
问题出在哪里呢?
相关文章推荐
- 为何多线程就能提高Java程序的执行效率
- 为何多线程就能提高Java程序的执行效率
- 优化sql语句,提升程序执行效率
- 这些术语关乎你的程序执行效率
- 解读30个提高Web程序执行效率的好经验
- 监控程序执行效率,页面执行时间
- 30条技巧提高Web程序执行效率
- oracle中查找执行效率低下的SQL
- oracle中查找执行效率低下的SQL
- 30个提高Web程序执行效率的好经验
- [编程好习惯] 利用编程语言特性提高程序执行效率
- C# 程序执行时间查看, 效率查看
- ABAP程序编写过程中怎么提高程序执行效率四
- 怎么提高程序执行效率
- 控制文件读写操作次数,提高程序执行的效率(经验)
- 检测Python程序执行效率及内存和CPU使用的7种方法
- asp程序执行数据库的效率好建议.
- 【编程好习惯】利用编程语言特性提高程序执行效率
- 解读30个提高Web程序执行效率的好经验
- 解读30个提高Web程序执行效率的好经验