Qt가 데이터베이스를 C#보다 느리게 읽습니까? 나는 뭔가를 놓치고 있다고 생각한다! 내가 Qt를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());
와 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);
에 folllowing 작성한 읽기 속도를 비교하기 위해 모두 C# 및 Qt를 x86
과 릴리스 모드에 있습니다. Qt의 경우
이 결과는 "63653 elapsed ms 68213"
했다 및 C# "63653 elapsed ms 14210"
Qt는 버전에 대한
에 나는
결과 58s 사이에서 있었다
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC" /*QODBC3*/);
db.setDatabaseName("Driver={SQL Server Native Client 11.0};"\
"Server=EMON;Database=FAODB;Uid=Test;Pwd=Test;");
에 의해
QString cs = "Driver={SQL Server}; Server=EMON;Database=FAODB;User=Test;Password=Test";
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC",cs);
db.setDatabaseName(cs);
을
대체했다 - 71s.
나는 우선 더 많은 것들을 좁혀 야 할 것이다. 어쩌면 Qt'Open' 호출은 어떤 이유로 54 초가 걸릴 것입니다. 쿼리 자체를 실행하는 것이 68 초의 대부분을 차지하는 지 확인하기 위해'while' 루프 만 따로 시간을 시험해보십시오. – Quantic
@Quantic 그 경우 Qt의 최고는'54s'와 C#'13s' –
둘 다 릴리스 모드에서 실행 했습니까? –