Qt读取数据库的速度是否比C#慢?我想我错过了什么!为了比较我在Qt中写下的阅读速度
QElapsedTimer t;
t.start();
int count = 0;
QString cs = "Driver={SQL Server}; Server=EMON;Database=FAODB;User=Test;Password=Test";
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC",cs);
db.setDatabaseName(cs);
db.open();
QSqlQuery query(db);
query.setForwardOnly(true);
query.exec("SELECT * FROM FAOCropsLivestock");
while(query.next()){
if(query.value("Country").toString() == "\"Bangladesh\"")
count++;
}
db.close();
qDebug()<< QString::number(count) + " elapsed ms " + QString::number(t.elapsed());
Run Code Online (Sandbox Code Playgroud)
并在C#
Stopwatch s = new Stopwatch();
s.Start();
int count = 0;
string cs = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
string query = "SELECT * FROM FAOCropsLivestock";
using(SqlConnection con = new SqlConnection(cs)){
using(SqlCommand cmd = new SqlCommand(query, con)){
con.Open();
SqlDataReader rd = cmd.ExecuteReader();
while (rd.Read()){
if(rd["Country"].ToString() == "\"Bangladesh\"")
count++;
}
}
}
s.Stop();
Console.WriteLine(count + " elapsed ms " + s.ElapsedMilliseconds);
Run Code Online (Sandbox Code Playgroud)
C#和Qt都适用x86于发布模式.
在Qt的情况下,结果是"63653 elapsed ms 68213"
在C#中"63653 elapsed ms 14210"
对于Qt版本,我已经更换了
QString cs = "Driver={SQL Server}; Server=EMON;Database=FAODB;User=Test;Password=Test";
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC",cs);
db.setDatabaseName(cs);
Run Code Online (Sandbox Code Playgroud)
通过
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC" /*QODBC3*/);
db.setDatabaseName("Driver={SQL Server Native Client 11.0};"\
"Server=EMON;Database=FAODB;Uid=Test;Pwd=Test;");
Run Code Online (Sandbox Code Playgroud)
结果在58s-71s之间.
对于您的 C# 版本,您不会显示连接字符串。您是否为两者使用相同的驱动程序?我不是这方面的专家,但我的同事说“SQL Server”驱动程序非常非常旧而且速度很慢。您可能想尝试“SQL Native Client”或类似的东西。无论哪种方式,请确保测试使用相同的 SQL 驱动程序。
| 归档时间: |
|
| 查看次数: |
473 次 |
| 最近记录: |