`
rensanning
  • 浏览: 3518320 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:37579
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:604650
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:678516
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:87540
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:400045
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69129
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:90644
社区版块
存档分类
最新评论

在Titanium中通过使用BEGIN/COMMIT来加速SQLite插入操作

阅读更多
对于Titanium的性能一直是大家关心的一个问题,今天给大家分享一个提高往数据库中插入数据性能的方法:使用BEGIN/COMMIT。

一般我们在往数据库中插入数据的时候,通常的做法是:
1、打开DB var db = Ti.Database.open();
2、执行插入语句 db.execute();
3、关闭数据库 db.close();

为大家介绍的技巧是:
  在执行插入语句之前先执行db.execute('BEGIN;');
  在执行插入语句之后执行db.execute('COMMIT;');

这样一来就能大幅提高数据库的插入性能。

我们拿Android版的应用来测试一下到底是否能提高性能,这里我们试着往数据库中插入1000件数据,看看一般的做法和使用了该技巧之后的执行速度有什么差距。

   Ti.include("tracer.js");

   // BEFORE
   var dbLog = tracer.createTracer('db');
   dbLog.info('opening database');
   var db = Ti.Database.open("TEST");
   //db.execute("CREATE TABLE ITEM(ID integer, VALUE varchar(20))");
   
   dbLog.info('deleting old items');
   db.execute('DELETE FROM ITEM');
   dbLog.info(db.rowsAffected + ' rows deleted');
   
   dbLog.info('starting insert');
   for( var i = 0; i < 1000; i++ ){
      db.execute('INSERT INTO ITEM (ID, VALUE) VALUES(?,?)', i, 'VALUE'+i);
   }
   dbLog.info( 'finished inserts' );
   dbLog.info( 'closing database' );
   db.close();
   dbLog.info('database save complete');	

   // AFTER
   var dbLog2 = tracer.createTracer('db2');
   dbLog2.info('opening database');
   var db2 = Ti.Database.open("TEST");
   dbLog2.info('deleting old items');
   db2.execute('DELETE FROM ITEM');
   dbLog2.info(db2.rowsAffected + ' rows deleted');
   dbLog2.info('starting BEGIN');
   db2.execute('BEGIN;');
   dbLog2.info('starting insert');
   for( var i = 0; i < 1000; i++ ){
      db2.execute('INSERT INTO ITEM (ID, VALUE) VALUES(?,?)', i, 'VALUE'+i);
   }
   dbLog2.info( 'finished inserts' );
   dbLog2.info( 'starting commit' );
   db2.execute('COMMIT;');
   dbLog2.info( 'finished commit' );
   dbLog2.info( 'closing database' );
   db2.close();
   dbLog2.info('database save complete');


执行结果如下:


可以明显的看出所花费的时间从 7670ms 变为了 1609ms,大概提高了7倍的速度。

很多人马上会问到为什么加了之后性能就提高了呢?其实大家查看TiDatabaseProxy.java的源码你会发现,Titanium也只是将SQL的执行交给了Android来执行。所以归根结底还是Android系统的android.database.sqlite.SQLiteDatabase这个类的作用。

其中的tracer是一个输入LOG的库,示例代码也上传给大家code.rar
  • 大小: 48.6 KB
0
0
分享到:
评论

相关推荐

    RESTe, 用于 Titanium的简单 JavaScript rest/api helper.zip

    RESTe, 用于 Titanium的简单 JavaScript rest/api helper RESTe未来的重大更改在 1.4.5中,提供了支持错误对象的新选项。 默认情况下关闭,可以通过设置打开它:.errorsAsObjects = true在RESTe配置中,这将确保获得...

    Google-Cloud-Messaging--Titanium-, 在 Titanium 中,Google云消息传递.zip

    Google-Cloud-Messaging--Titanium-, 在 Titanium 中,Google云消息传递 Google-Cloud-Messaging--Titanium -注册带有GCM和处理发送到设备的通知的Titanium MODULE 。Android平台使用c2dm进行推送,但是因为c2dm停止...

    UBNT XM.v5.1.0.3635.100107.1730.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.2.1.6359.100913.1803.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.6.5.29033.160515.2119.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.6.6.29183.160526.1225.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v6.0.30097.161219.1716.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.3.2.8909.110429.1745

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.3.0.7782.110114.1442.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.6.9.29546.160819.1157.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.1.2.3998.100209.1840

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.0.0.2386.090716.1502

    * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/M365/M900/M5 * AirGrid M2/M5/HP/HP New * PowerBridge...

    UBNT XM.v5.6.9-cpu400.29546.160819.1157.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.6.3.28591.151130.1749.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    XM.v6.0.4.30805.170505.1525.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.6.4.28924.160331.1253.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    UBNT XM.v5.6.7.29374.160701.1559.bin

    UBNT XM.v5.0 - XM.V6.0 全系列固件 * Bullet M2/M5/Titanium * Rocket M2/M2 Titanium/M3/M365/M900/M5/M5 GPS/M5 Titanium/M6 * NanoStation M2/M3/M365/M5/M6 * NanoStation Loco M2/M900/M5 * NanoBridge M2/M3/...

    titanium-platforms:Titanium:trade_mark:SDK实用程序,用于设备条件代码

    仅在包模式和与一起使用。 如果您使用的是Alloy,则只需使用。 安装 $ npm install --save titanium-platforms ECMAScript 5 var OS_ANDROID = require ( 'titanium-platforms/os/android' ) ; var OS_IOS = ...

    钛备份Titanium Backup Pro v3.8.4捐赠完全版

    第一次使用钛备份的朋友,可以试着自定义一下文件备份的路径:钛备份默认会将程序和数据备份在SD卡的 TitaniumBackup文件夹里,但如果是像白鸽这样使用的包含内置和外置两种SD 卡的手机Atrix 4G的话(这样的手机除 ...

Global site tag (gtag.js) - Google Analytics