OCILIB VC2008 效率测试
2014年4月29日19:59:43
1、VS2008新建一个空的控制台程序。
2、源代码:
//test.cpp文件
#pragma comment(lib,"ociliba.lib")
#define OCI_CHARSET_ANSI
#include <ocilib.h>
#include<time.h>
#define BEGIN_NUM 900000
#define MAX_NUM 1000000
int main(void)
{
clock_t start,finish;
double duration;
OCI_Connection *cn;
if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT|OCI_ENV_CONTEXT))
return EXIT_FAILURE;
cn = OCI_ConnectionCreate("orcl", "etc_ctrlr", "itsmoe", OCI_SESSION_DEFAULT);
OCI_Statement * st;
st = OCI_StatementCreate(cn);
int nRet =0;
start = clock();
char strSQL[400] = {0};
int nSN = BEGIN_NUM;
sprintf(strSQL,"insert into LWW_TXF_TEST (SN,CARDID,MVLICENSE,ENTRYTIME) VALUES "
"(%d,'123','seu',to_date('1999-09-12', 'YYYY-MM-DD'))",nSN);
OCI_Prepare(st, strSQL);
nRet = OCI_Execute(st);
while (nSN<MAX_NUM)
{
nSN ++;
sprintf(strSQL,"insert into LWW_TXF_TEST (SN,CARDID,MVLICENSE,ENTRYTIME) VALUES "
"(%d,'123','seu',to_date('1999-09-12', 'YYYY-MM-DD'))",nSN);
if(0 == nSN % 1000)
{
OCI_Commit(cn);
if(nSN >= MAX_NUM)break;
OCI_Prepare(st, strSQL);
OCI_Execute(st);
}
else
{
OCI_ExecuteStmt(st,strSQL);
}
}
finish = clock();
duration = double(finish - start)/CLOCKS_PER_SEC;
printf("time used:%f ms\n",1000*duration);
system("pause");
OCI_Break(cn);
OCI_Cleanup();
return 0;
}
3、有唯一主键建表语句
create table LWW_TXF_TEST (SN NUMBER primary key,CARDID VARCHAR2(25),MVLICENSE VARCHAR2(20),ENTRYTIME DATE)
时间:
0到10万,128.7s;10万到20万,137.5s;20万到30万,139.0s;30万到40万,135.5s;40万到50万,131.2s;
50万到60万,136.0s;60万到70万,137.2s;70万到80万,131.2s;80万到90万,122.5s;90万到100万,134.5s.
4、没有主键建表语句
create table LWW_TXF_TEST (SN NUMBER,CARDID VARCHAR2(25),MVLICENSE VARCHAR2(20),ENTRYTIME DATE)
时间:
0到10万,125s;10万到20万,126.6s;20万到30万,130.0s;30万到40万,131.0s;40万到50万,125.1s;
50万到60万,124.0s;60万到70万,130s;70万到80万,128.3s;80万到90万,120.6s;90万到100万,131.5s.