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!!!!!

  • 相关阅读:
    Java小案例——对字符串进行加密解密
    Java基础——使用三元运算符判断一个数的奇偶性
    Java基础——字母大小写转换
    多线程实现——新龟兔赛跑
    编程面试题之——简答题(持续更新...)
    多线程之——共享数据
    多线程之——线程的状态
    Android 8.0 Oreo介绍
    Android 7.0 Nougat介绍
    Android 6.0 Marshmallow介绍
  • 原文地址:https://www.cnblogs.com/zelos/p/3402886.html
Copyright © 2011-2022 走看看