对于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
分享到:
相关推荐
RESTe, 用于 Titanium的简单 JavaScript rest/api helper RESTe未来的重大更改在 1.4.5中,提供了支持错误对象的新选项。 默认情况下关闭,可以通过设置打开它:.errorsAsObjects = true在RESTe配置中,这将确保获得...
Google-Cloud-Messaging--Titanium-, 在 Titanium 中,Google云消息传递 Google-Cloud-Messaging--Titanium -注册带有GCM和处理发送到设备的通知的Titanium MODULE 。Android平台使用c2dm进行推送,但是因为c2dm停止...
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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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/...
* 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.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 - 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 - 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 - 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 - 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/...
仅在包模式和与一起使用。 如果您使用的是Alloy,则只需使用。 安装 $ npm install --save titanium-platforms ECMAScript 5 var OS_ANDROID = require ( 'titanium-platforms/os/android' ) ; var OS_IOS = ...
第一次使用钛备份的朋友,可以试着自定义一下文件备份的路径:钛备份默认会将程序和数据备份在SD卡的 TitaniumBackup文件夹里,但如果是像白鸽这样使用的包含内置和外置两种SD 卡的手机Atrix 4G的话(这样的手机除 ...