sqlite效率探测
在编译后当然就是使用sqlite,贸贸然去测试了一下创建数据库,插入数据,仅几条数据,发现,真不错的数据库,后来把数据量提高到10000的 时候,发现,怎么这么慢,后来自己都受不了,网上一查,原来是如果在没有使用事务的情况下每次执行都会自动代表一次事务进行数据库读写,而不是在内存中操 作,想想看这样必然很慢,后来自己把事务添加上去,真的很惊讶,提高数度肯定有好几千倍。兴奋。。。。
把代码帖一下:
#include <iostream>
#include <tchar.h>
#include <windows.h>
#include <MMSystem.h>
#pragma comment(lib,"winmm.lib")
#define TEST_TIMES 10000
#define ONE_M 1048576
#define TEST_SELECT
#define USE_TRANSACTION
#include "sqlite3.h"
typedef int(*sqlite3_callback)(void*,int,char**,char**);
char Name[4][32] = {"david","boluns","guanzhongdaoke","wangba"};
char Sex[2][8] = {"boy","girl"};
int SleectCB(void* para,int n_column,char** column_value,char** column_name )
{
printf("记录包含%d个字段\n", n_column );
for(int i = 0 ; i < n_column; i ++ )
{
printf("字段名:%s 字段值:%s\n", column_name[i], column_value[i] );
}
printf("------------------\n");
return 0;
}
int sqlite_main()
{
sqlite3 * db = 0;
int result = 0;
char * errmsg = 0;
#ifdef TEST_SELECT
remove("test.db");
result = sqlite3_open("test.db", &db );
if( result !=SQLITE_OK)
return -1;
result = sqlite3_exec( db,"create table Info( ID integer primary key
, name nvarchar(32) ,sex integer,age integer)", NULL, NULL, &errmsg
);
if(result !=SQLITE_OK)
printf("创建表失败,错误码:%d,错误原因:%s\n", result, errmsg );
#ifdef USE_TRANSACTION
result = sqlite3_exec( db,"begin;", 0, 0, &errmsg );
#endif
char sSQL[128] = {0};
for (int i=0;i<TEST_TIMES;i++)
{
memset(sSQL,0,128);
sprintf(sSQL,"insert into Info values (%d,'%s','%s',%d)",i,Name[rand()%4],Sex[rand()%2],rand()%50+1);
result = sqlite3_exec( db,sSQL, 0, 0, &errmsg );
if(result !=SQLITE_OK)
printf("插入记录失败,错误码:%d,错误原因:%s\n", result, errmsg );
}
#ifdef USE_TRANSACTION
result = sqlite3_exec( db,"commit;", 0, 0, &errmsg );
#endif
#else
result = sqlite3_open("test.db", &db );
if( result !=SQLITE_OK)
return -1;
result = sqlite3_exec( db,"select * from Info", SleectCB, NULL, &errmsg );
#endif
sqlite3_close( db );
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwNow = timeGetTime();
sqlite_main();
printf("数据库初始化用时:%dms\r\n",timeGetTime()-dwNow);
return 0;
sqlite效率探测的更多相关文章
- 提升SQLite数据插入效率低、速度慢的方法
前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代c语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候, ...
- 提升SQLite数据插入效率低、速度慢的方法(转)
前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代C语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候, ...
- [转载]提升SQLite数据插入效率低、速度慢的方法
转载地址:http://blog.csdn.net/chenguanzhou123/article/details/9376537#,如果有侵犯原创,请留言告知,本人会及时删除. 前言 SQLite数 ...
- SQLite事务 SQLite插入多条语句为什么这么慢?.net (C#)
今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入1000条记录,居然耗时 2 分钟!下面是他发给我的测试代码.我晕~~~~~~ using System.Data; ...
- IOS数据存储之CoreData使用优缺点
前言: 学习了Sqlite数据之后认真思考了一下,对于已经习惯使用orm数据库的开发者或者对sql语句小白的开发者来说该如何做好数据库开发呢?这个上网搜了一下?看来总李多虑了!apple 提供了一种数 ...
- SqLiter
1.去重 select * from daydata where wtid||rectime in (select wtid||rectime from daydata group by wtid| ...
- CoreData介绍
http://blog.csdn.net/zh952016281/article/details/52105683 写在前面 在CoreData中有一些常用的类,称呼可能各不相同.所以这里先约定一些关 ...
- 认识CoreData—初识CoreData
http://www.cocoachina.com/ios/20160729/17245.html 这段时间公司一直比较忙,和组里小伙伴一起把公司项目按照之前逻辑重写了一下.由于项目比较大,还要兼顾之 ...
- 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案
如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...
随机推荐
- c# 调用python语言
config 文件配置 <configuration>节中 第一个的位置插入如下节点,版本根据实际用到的来写 <configSections> <section ...
- 房上的猫:java基础知识部分知识点
1.Java常见的注释有哪些,语法是怎样的? 1)单行注释用//表示,编译器看到//会忽略该行//后的所文本 2)多行注释/* */表示,编译器看到/*时会搜索接下来的*/,忽略掉/* */之间的文 ...
- Python并发实践_03_并发实战之一
16S数据质控流程,一次下机lane包括很多的项目,每个项目有独立的合同号,一个项目可能包含16S或者ITS两种,通过一个完整的pipeline,将上游拆分好的数据全部整理成可以直接分析的数据.原本这 ...
- 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类)
近期工作中有使用到 MongoDb作为日志持久化对象,需要实现对MongoDb的增.删.改.查,但由于MongoDb的版本比较新,是2.4以上版本的,网上已有的一些MongoDb Helper类都是基 ...
- 浅析mongodb
当爬取数据时候,我们可能需要缓存大量的数据,但是又无须任何复杂的连接操作,因此我们将选用NoSQL数据库,这种数据库比传统的关系型数据库更易于操作,这里我想主要说一下目前非常流行的MongoDB作为缓 ...
- 【漏洞分析】dedecms有前提前台任意用户密码修改
0x00 前言 早上浏览sec-news,发现锦行信息安全发布了一篇文章<[漏洞分析] 织梦前台任意用户密码修改>,看完之后就想着自己复现一下. 该漏洞的精髓是php的弱类型比较,'0. ...
- (译)ABP之Entities
原文地址:https://aspnetboilerplate.com/Pages/Documents/Entities#DocAuditing 实体是DDD(领域驱动模型)的核心概念之一,Eric E ...
- JS ajaxfileUpload 一次性上传多个input控件 上传多个文件
本方法适用于一次性上传多个input框输入的文件,如下图所示,任务是需要一次上传两个input框提供的两个文件. 具体方法: 1.修改ajax调用方法 如上图所示,只需要将ajaxFileUpload ...
- 2017 年的 人生 hard 模式终于结束了,2018年回归初心(二)
今天周末, 深圳的天气简直好的不像话.好了,我们继续之前的话题往下聊. >>>猎头 : 关于猎头这个行业,以笔者的感觉来说 一般你工作年限未超过三年的话,你是很难遇到猎头来推送你的简 ...
- mvc接口、webapi、webservice 对比
最近做了很多项目,也同时使用了mvc的接口,webapi的接口,以及webservice 的接口.先两两对比如下: mvc和webapi区别: 1.MVC是建站的一种框架,倾向于返回用户的页面请求:a ...