用Sqlite Expert查询的时候,查询时间为:72ms,但是c#查询需要差不多2秒多!
查询语句如下:
public static DataSet Query(string SQLString)
{
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SQLite.SQLiteException ex)
{
throw new Exception(ex.Message);
}
return ds;
}
}
查询时间调试:
Stopwatch st = new Stopwatch();
st.Start();
BLL.TestPaperDetail bll = new BLL.TestPaperDetail();
DataSet ds = bll.GetTestPaperDis("TestPaperID=" + TestPaperID, Columns, "QuesType,Difficulty");
st.Stop();
MessageBox.Show(st.Elapsed.ToString());
这个时候调试差不多2秒多;
但是把sql语句直接在sqlite Expert里面执行,只要70多毫秒!
求解!~!!!!
你的测时范围过大了,在 command.Fill()函数的开始和结束之间也放一个Stopwatch试试。
测试过了,也差不多!数量级上没有什么变化!
测试糟点太多了,
1、一个包含了建立连接的时间,一个不包含。
2、数据行是多少不清楚,有可能建立连接的时间已经远远大于取数据的时间。
3、中了PETSHOP N层的毒,包装里面有问题的代码还不知道有多少。
4、也许还是Debug模式下的时间,而不是Release模式下的时间,不过这个已经不重要了。
有了上面这三个已经完全致命了。
BLL.TestPaperDetail bll = new BLL.TestPaperDetail(); DataSet ds = bll.GetTestPaperDis("TestPaperID=" + TestPaperID, Columns, "QuesType,Difficulty");
这些是什么鬼?
你自己包装一堆乱七八糟的类,性能极差,然后怪ADO.NET?
ADO.NET无辜: “这怪我咯?!”
多层架构懂不?
@陈啊M: 哈哈,不懂。啥是多层架构?
@陈啊M: 和大叔谈多层架构?-_-|||还是看看你的DAL层的逻辑吧,估计时间耗在那里了
@陈啊M: 二货
用 SQLiteCommand 和 SQLiteDataReader 测试下,然后不要去填充 DataSet,使用 List<T>。
阁下是不是来吐槽ADO.NET性能极差的?
你贴出来的代码没有连续性哈。。既然要测试性能,那么就对每一句代码来打印执行时间。。