websql に挿入する必要がある約 300 のレコードがあります。まず、パラメーターなしで 300 の個別の tx.executeSql 挿入ステートメントを作成しました。
tx.executeSql("INSERT INTO `beerlist` VALUES ('1', '21st Amendment', 'Back in Black IPA', '83', 'IPA', 'A');");
Chrome では、これには 2 ミリ秒かかります。Android で phonegap を介して実行すると、約 43,438 ミリ秒かかります。そこで、いくつかの JSON を繰り返し処理し、prepare ステートメントを使用することに切り替えました。そのようです:
var beerList = {"beers":[{"beerid":"1","brewery":"21st Amendment","beername":"Back in Black IPA","bascore":"83","beertype":"IPA","beertable":"A"}}
$.each(beerList.beers, function(i, object) {
var insert = 'INSERT INTO beerlist VALUES (?, ?, ?, ?, ?, ?)';
tx.executeSql(insert, [object.beerid, object.brewery, object.beername, object.bascore, object.beertype, object.beertable], Beer.successInsert, Beer.failureInsert);
});
どこで準備が速くなるかを読みましたが、Chrome でも同じパフォーマンスが見られますが、実際には Android の Phonegap で 53,559 ミリ秒のわずかに悪いパフォーマンスが見られます。300 レコードを挿入するのに 50 秒もかかるなんて信じられません。何かご意見は?