在编译后当然就是使用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效率探测的更多相关文章

  1. 提升SQLite数据插入效率低、速度慢的方法

    前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代c语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候, ...

  2. 提升SQLite数据插入效率低、速度慢的方法(转)

    前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代C语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候, ...

  3. [转载]提升SQLite数据插入效率低、速度慢的方法

    转载地址:http://blog.csdn.net/chenguanzhou123/article/details/9376537#,如果有侵犯原创,请留言告知,本人会及时删除. 前言 SQLite数 ...

  4. SQLite事务 SQLite插入多条语句为什么这么慢?.net (C#)

    今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入1000条记录,居然耗时 2 分钟!下面是他发给我的测试代码.我晕~~~~~~ using System.Data; ...

  5. IOS数据存储之CoreData使用优缺点

    前言: 学习了Sqlite数据之后认真思考了一下,对于已经习惯使用orm数据库的开发者或者对sql语句小白的开发者来说该如何做好数据库开发呢?这个上网搜了一下?看来总李多虑了!apple 提供了一种数 ...

  6. SqLiter

    1.去重 select *  from daydata where wtid||rectime in (select wtid||rectime from daydata group by wtid| ...

  7. CoreData介绍

    http://blog.csdn.net/zh952016281/article/details/52105683 写在前面 在CoreData中有一些常用的类,称呼可能各不相同.所以这里先约定一些关 ...

  8. 认识CoreData—初识CoreData

    http://www.cocoachina.com/ios/20160729/17245.html 这段时间公司一直比较忙,和组里小伙伴一起把公司项目按照之前逻辑重写了一下.由于项目比较大,还要兼顾之 ...

  9. 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案

    如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...

随机推荐

  1. asp.net 未能加载文件或程序集“WebApi”或它的某一个依赖项。试图加载格式不正确的程序。

    http://blog.csdn.net/lingxyd_0/article/details/43155039 一般情况下出现这样的问题是因为.dll文件不存在或者路径不正确.但今天我遇到的情况都不在 ...

  2. ASP.NET MVC 5使用Swagger生成API文档

    一.安装 新建一个没有身份验证的mvc项目 - SwaggerMvc5Demo,然后添加一个名为Remote(自定义)且包含基础读写(不想手写)的ApiController   开源地址:https: ...

  3. IO流之字节流知识总结

    IO流分为字符流和字节流. 字节流;可以读取任何文件,电脑以字节的方式储存 字符流:用来读取字符. 下面是我总结的思维导图. 相关练习代码 public class Demo { @Test publ ...

  4. ssh整合开发

    ssh整合思想 ssh整合 第一步:导入ssh相关jar包 第二步:搭建struts环境   (1)创建 action  struts.xml配置文件, 配置action struts.xml约束 & ...

  5. JS 对象API之判断自有属性、共有属性

    自有属性:对象实例私有的属性,只有该对象实例可用 共有属性:对象实例共有的属性,所有对象实例都可用 要判断对象实例的自有属性.共有属性:首先看看JS给我们提供的两个方法: 1.判断是否是对象实例的属性 ...

  6. navicat for sqlite 11.1.12 patch 永久试用 不报毒

    因为最近需要用这个但是网上都是注册机没有成功注册,所以就自己动手使用ollydbg开刀,    修改成了永久试用版本. 着急用所以没仔细分析,暂时先这样吧. 这个下载版本 http://dlsw.ba ...

  7. duilib基本框架

    最近我一个同学在项目中使用到了duilib框架,但是之前并没有接触过,他与我讨论这方面的内容,看着官方给出的精美的例子,我对这个库有了很大的兴趣,我自己也是初学这个东东,我在网上花了不少时间来找相关的 ...

  8. python 爬取腾讯微博并生成词云

    本文以延参法师的腾讯微博为例进行爬取并分析 ,话不多说 直接附上源代码.其中有比较详细的注释. 需要用到的包有 BeautifulSoup WordCloud jieba # coding:utf-8 ...

  9. 记一个http-proxy-middleware 代理访问nginx映射的接口不通过的问题(connection close)

    工作过程中遇见一个问题,使用Vue-cli 搭建了一个工程,由于跨域的问题 使用了自带的dev-server Express Server(A后台) http-proxy-middleware 去访问 ...

  10. H5 调用手机摄像机、相册功能

    <input type="file" accept="image/*" capture="camera"> <input ...