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

在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配置中,这将确保获得...

    Titanium中支持IOS设备的拖拽

    在iOS开发中,Titanium是一个流行的跨平台框架,它允许开发者使用JavaScript编写代码,同时能够构建原生的iOS和Android应用程序。"Titanium中支持iOS设备的拖拽"这一主题聚焦于如何在Titanium框架下实现iOS应用的...

    Titanium资料

    在 Titanium 中,可以使用 SQLite 数据库来存储应用的数据。这份文档会涵盖如何创建数据库,定义表,执行 SQL 查询,插入、更新和删除数据,以及在应用中读取和显示这些数据。 最后,`api.json` 文件可能是一个 ...

    Titanium中文版开发手册

    **Titanium中文版开发手册** Titanium中文版开发手册是一份专门为中文用户编译的开发者指南,旨在帮助熟悉中文的开发者充分利用Titanium框架进行移动应用的开发。Titanium是一个开源的JavaScript平台,允许开发者...

    Titanium中Httpclient访问REST 服务

    本主题将深入探讨如何在Titanium框架中使用HttpClient访问REST服务,这对于构建跨平台的移动应用至关重要。 Titanium是一款JavaScript开发的开源移动应用框架,它允许开发者使用JavaScript编写原生iOS和Android应用...

    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/...

    Titanium开发者平台介绍

    - **Titanium.Database**:支持SQLite数据库操作,方便数据持久化。 - **Titanium.Network**:处理网络请求,包括HTTP/HTTPS等。 - **Titanium.Platform**:获取运行环境信息,比如操作系统版本、设备型号等。 - **...

    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/...

Global site tag (gtag.js) - Google Analytics