日期:2014-5-18 浏览次数:20225次 点赞次数:20

关于C# 性能的问题
在VS2005 中 reader[0] 和reader.GetInt32(0) 和reader.GetInt32(reader.GetOrdinal("id"))哪种方法好些,哪种性能快些?
 using (SqlConnection con = new SqlConnection(SqlHelper.ConnectionString)) 
和 SqlConnection con = new SqlConnection(SqlHelper.ConnectionString)
哪个性能快些?

------解决方案--------------------
感觉 reader[0] 和using (SqlConnection con = new SqlConnection(SqlHelper.ConnectionString)) 应该快些吧
期待高手跟进
------解决方案--------------------
using (SqlConnection con = new SqlConnection(SqlHelper.ConnectionString))会调用con.Dispose();
------解决方案--------------------
reader.GetInt32(0)这个速度快,因为这个直接调用方法。
using()这个我就说不好了。
------解决方案--------------------
reader[0]等同月GetValue(0)

reader.GetInt32(0)的效率要高于GetValue(0)
差别在于只做类型检查,而省略了做类型判断的处理

reader.GetInt32(0) 和reader.GetInt32(reader.GetOrdinal("id"))基本相差不大
因为根据列名取索引的时候在内部用hashtable缓存了

需要说明一点的是,每个reader(比如SqlReader和OracleReader)具体实现的方式不同,
所以即使完全一样的代码,如果reader类型不同的话,具体效果也还是有细微差别的