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 ...
随机推荐
- powerdesigner的使用
前言 做过建模和设计的人都知道,powerdesigner是个强大实用的工具:采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并为研发生命周期管理提供强大的分析与设计技术.本文档 ...
- 去除测序reads中的接头:adaptor
之前用c写过一个程序,查找reads中是否包含了adaptor,如果检测到的话就过滤掉含有adaptor的reads,这次在过滤完数据之后发现接头序列比较多,为了提升组装效果,又不能很大地影响数据量, ...
- 基于Vue+node.js的个人博客
前言 作为一个年轻的程序员,而且是作为一个未来的前端工程师,怎么能没有一个属于自己的博客呢,于是乎在暑假咸鱼了一个多月后开始了我的博客的编写. 技术栈 前端 vue.js+scss 因为当时没学vu ...
- 物流包裹一站式查询(TrackingMore)
快递查询接口 目前提供快递查询的接口平台有: Trackingmore 快递100 快递网 不同接口的区别: (1)Trackingmore支持380家快递公司,其中有55家为国内的快递,其余325家 ...
- 未知宽高图片水平垂直居中在div
<BODY> <div class="box"> <span class="car"></span> <i ...
- mysql之其他
一 IDE工具介绍 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: 1. 测试+链接数据库 2. 新建库 3. 新建表,新增字段+类型+约束 4. 设计表:外键 5 ...
- windows第七层负载均衡--基于IIS的ARR负载均衡
载均衡有很多种方法,有硬件负载均衡,软件负载均衡,还可以从域名解析下手. 不过,今天只讲软件负载均衡 软件负载均衡一般分两种,从网络协议来讲(tcp/ip),主要集中在第四层和第七层进行负载均衡. 第 ...
- 读书笔记《CSS权威指南》
阅读本书主要目的: 自从学会CSS以来,虽然熟练掌握了其使用方法和技巧,但对其底层的原理和实现并不清晰,阅读本书想进一步系统化的学习和深入研究其本质,对这门前端基础语言从熟练使用到真正理解. 第1章 ...
- Matlab与C++混合编程(依赖OpenCV)
Matlab与C++混合编程实际上就是通过Matlab的Mex工具将C++的代码编译成Matlab支持调用的可执行文件和函数接口.这样一方面可以在Matlab中利用已经编写好的函数,尽管这个函数是用C ...
- Python中的数据类型以及他们的方法
数据类型: 1)int i = 100 print(i.bit_length()) ''' bit_length 1 0000 0001 1 2 0000 0010 2 3 0000 0011 2 2 ...