• 您的位置我爱Aspx >> VC.Net >> C#和C++的速度大比拼(二)
  • C#和C++的速度大比拼(二)

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:49:04  关键字:c#
  • C#和C++的速度大比拼(二)

    G>数据库存取测试

    在这一部分,我们将用C++和C#代码来测试两者对数据库的存取和处理。方法是对同一个数据库表进行操作。表结构如下: CREATE TABLE testtable ( col1 INTEGER, col2 VARCHAR(50), PRIMARY KEY (col1) )

    测试将分三个部分,第一部分和第三部分集中对数据处理,第二部分集中对数据存取。数据处理和数据存取的测试结果是分开呈现的。 下面是数据存取和处理的C++代码: 代码五:db.cpp #import "msado15.dll" \ no_namespace rename("EOF", "EndOfFile") #include <iostream> #include <string> #include <sstream> int main(int argc, char* argv[]) { if (argc != 2) { std::cerr << "Usage:\tdb [rows]\n"; return 1; }; ::CoInitialize(NULL); int NUM = atoi(argv[1]); DWORD dw = ::GetTickCount(); _ConnectionPtr conptr(__uuidof(Connection)); conptr->Open(L"Provider=Microsoft.Jet.OLEDB.4.0;" "Data Source=c:\\db.mdb;", L"", L"", adOpenUnspecified); for (int i=0;iExecute(sql, &RecordsEffected, adCmdText); }; DWORD dw2 = ::GetTickCount(); std::cout << "Milliseconds = " << dw2-dw << std::endl; dw = ::GetTickCount(); for (int j=0;j<100;j++) { _RecordsetPtr rsptr(__uuidof(Recordset)); rsptr->Open(L"SELECT col1, col2 FROM testtable", conptr.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdText); while (rsptr->EndOfFile) { _variant_t v1 = rsptr->GetCollect("col1"); _variant_t v2 = rsptr->GetCollect("col2"); rsptr->MoveNext(); }; rsptr->Close(); }; dw2 = ::GetTickCount(); std::cout << "Milliseconds = " << dw2-dw << std::endl; dw = ::GetTickCount(); for (int i=0;i 下表为运行十次,每次100行记录的结果 表三:数据库测试结果

    序号 C++(~毫秒) C#(~毫秒)
    1 1612/441/450 4086/630/560
    2 391/410/441 490/630/520
    3 370/421/440 480/510/440
    4 371/420/451 470/510/450
    5 370/421/461 460/500/450
    6 371/420/461 470/500/460
    7 370/411/471 470/500/460
    8 381/410/451 460/510/470
    9 370/421/450 470/510/470
    10 391/410/461 460/510/470
    平均值 499/419/454 832/531/475
    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:走出MFC子类化的迷宫
    下一篇:C#和C++的速度大比拼(第一部分)