C++: Sqlite3几种数据插入方式比较
来源:互联网 发布:小白菜软件 编辑:程序博客网 时间:2024/05/17 18:27
在sqlite3中,数据的更新模式默认为PRAGMA synchronous = FULL; 这个参数影响了更新数据的速度。
下面的测试代码表明,OFF状态比Full状态的更新速度快50倍左右
1. 示例代码
#include "sqlite3.h"#include <stdio.h>#include <time.h>#include <string.h>static char s_szDBFile[] = "d:\\test.db";//耗时计算class CElapseTime{public:CElapseTime(char *sPrompt){memset(m_sPrompt, 0, sizeof(m_sPrompt));strcpy(m_sPrompt, sPrompt);m_Start = clock();}~CElapseTime(){printf("[%s]耗时: %f\n", m_sPrompt, (clock() - m_Start)*1.0f/CLK_TCK);}private:char m_sPrompt[255];clock_t m_Start;};void TestInsert_SYN(int n, char *sSync, char *szSql){char sPrompt[255];sprintf(sPrompt, "%s 状态, %d条记录", sSync, n);CElapseTime aET(sPrompt);char *errMsg;sqlite3 *pDB;sqlite3_open(s_szDBFile, &pDB);sprintf(sPrompt,"PRAGMA synchronous = %s;", sSync);sqlite3_exec(pDB, sPrompt, 0,0,0);for(int i=0; i<n; i++){sqlite3_exec(pDB, szSql, 0, 0, &errMsg);}sqlite3_close(pDB);}void TestInsert_Full_Trans(int n, char *szSql){char sPrompt[255];sprintf(sPrompt, "FULL状态事务版, %d条记录", n);CElapseTime aET(sPrompt);char *errMsg;sqlite3 *pDB;sqlite3_open(s_szDBFile, &pDB);sqlite3_exec(pDB, "Begin transaction; ", 0,0,0);for(int i=0; i<n; i++){sqlite3_exec(pDB, szSql, 0, 0, &errMsg);}sqlite3_exec(pDB,"commit transaction;",0,0, &errMsg);sqlite3_close(pDB);}void CreateDB(){sqlite3 *pDB;sqlite3_open(s_szDBFile, &pDB);sqlite3_exec(pDB, "Create Table tblTest(a Text, b Text)", 0, 0, NULL);sqlite3_close(pDB);}void main(){int n = 5;char szInsertSQL[] = "Insert into tblTest(A,B) values(\"中华人民共和国中华人民共和国中华人民共和国\",\"中华人民共2和国中华人民共和国2中华人民共和国2\");";CreateDB();TestInsert_SYN(n, "FULL", szInsertSQL);TestInsert_SYN(n, "NORMAL", szInsertSQL);n *= 100;TestInsert_SYN(n, "OFF", szInsertSQL);TestInsert_Full_Trans(n, szInsertSQL);remove(s_szDBFile);}
2. 测试结果
机器配置xp sp3, i7-2640M, 内存3.48GB
[FULL 状态, 5条记录]耗时: 0.359000[NORMAL 状态, 5条记录]耗时: 0.297000[OFF 状态, 500条记录]耗时: 0.797000[FULL状态事务版, 500条记录]耗时: 0.250000
- C++: Sqlite3几种数据插入方式比较
- Hbase几种数据入库方式比较
- Hbase几种数据入库方式比较
- 比较Java中几种数据cache方式
- Hbase几种数据入库(load)方式比较
- 比较Java中几种数据cache方式
- 【转载】几种数据存储方式的特点比较
- C#:几种数据库的大数据批量插入
- C#:几种数据库的大数据批量插入
- C#:几种数据库的大数据批量插入
- 几种数据存储方式
- 几种数据保存方式
- vs2008的几种数据工具比较
- 【综合】几种数据载体的比较
- 几种数据库连接方式优缺点比较------ODBC ADO DAO
- Hive几种数据导入方式
- Hive几种数据导出方式
- Hive几种数据导入方式
- 判断年份是否是闰年
- JQuery文件引入MyEclipse 9.0时出现的问题解决
- ubuntu 解决 “E: Problem with MergeList /var/lib/apt/lists/”错误
- JSON 中文
- Debian Google Chrome
- C++: Sqlite3几种数据插入方式比较
- shell运算符
- android EditText控件如何禁止往里面输入内容?
- java 内存
- 可以让myeclipse后台代码修改后不必重新部署的方法(注:不包括配置文件的修改)
- Mac OS修改Hosts 文件的简便方法
- Linux工具大全_binutils
- Hadoop安全管理-java安全介绍
- access数据库简繁转换问题