zoukankan      html  css  js  c++  java
  • 不小心载在SQLite上了

      
    前一段时间有点郁闷,犯了点最基本的错误原本,应该相当的有效的事。。。。
    现在知道了,毕竟大规模的插入还是要用事务的。
    下面是一个典型的事例,测试不同的方法的插入表的效率前面的用了事务处理格式,希望大家引以为戒。
    代码:

    #include <stdio.h>
    #pragma comment(lib,"sqlite3static.lib")
    #include "sqlite3.h"
    #include <iostream>
    using namespace std;
    #include <ctime>

    char value[100];

    int main(void)
    {
     clock_t   startclock,   endclock;  
     sqlite3* db = 0;

    /*************************************************************************/
     sqlite3_open("MyDB", &db);
     sqlite3_exec(db,"create table Student(english QString)",0,0,0);

     /*situation 1*/
     startclock=clock();
     sqlite3_exec(db, "begin", 0, 0, 0);
     for(int i=0;i<100;i++)
     {
      sprintf(value,"insert into Student values(%d)",i);
      sqlite3_exec(db,value,0,0,0);
     }
     sqlite3_exec(db, "commit", 0, 0, 0);
     endclock=clock();  

     cout<<(double)(endclock-startclock)/CLOCKS_PER_SEC<<endl;

     sqlite3_close(db);

    /***************************************************************************/ 
     sqlite3_open("MyDB1", &db);
     sqlite3_exec(db,"create table Student(english QString)",0,0,0);

     /* situation 2*/
     startclock=clock();
     for(int i=0;i<100;i++)
     {
      sprintf(value,"insert into Student values(%d)",i);
      sqlite3_exec(db,value,0,0,0);
     }
     endclock=clock();  

     cout<<(double)(endclock-startclock)/CLOCKS_PER_SEC<<endl;

     sqlite3_close(db);
    /*****************************************************************************/
     return 0;
    }

    在我的机子上的结果是
    0.18
    11.757
    效率差了很多,前者只有在事务提交时打开了数据库一次,写入一次,而后者在每次insert时都打开了数据库,进行写入操作,然后关闭数据库文件,进行了多次IO读写,自然就慢了。

      !@!@#@$!#@%$%$%^$&$&$%(*$^(&&*)%)*&)(_(*&_&(_*_+&(^)^*)

    Why? CSDN doesn't have C/C++ code insert format!!!!!

  • 相关阅读:
    Android 使用系统签名打包apk
    创业公司如何巧用工具提高团队生产力——豌豆荚创始人王俊煜讲述团队背后的“利器”
    Spring整合BoneCP+Hibernate配置数据连接池
    EhCache集群方案JGroups
    IOS 目录结构
    关于hibernate的缓存使用
    用webbrowser控件做一个资源管理器,如何得到IE控件中选中(鼠标多选)的文件名称列表?
    轮回!
    转载:谨以此文献给才毕业25年的朋友
    新的开始
  • 原文地址:https://www.cnblogs.com/zelos/p/3402886.html
Copyright © 2011-2022 走看看