私は、メトリクスデータを保存するためにsqliteデータベースを利用するas3アプリケーションを持っています。 as3はシングルスレッドであることはよく知られているので、私がこのdbに保存すると、私が演奏しているステージビデオが不安定になります!私はループ内で保存するように、バッチでDBデータを保存すると、このプロセスをスピードアップすることができますことを聞いたことがある:sqlite DBへの保存を最適化しますか?
for (var i:int=0; i < metricsObject.metricsComponentData.length; i++){
switch (metricsObject.metricsComponentData[i].mouseType) {
case MetricsCollator.MOUSE_OVER:
this._query_txt = "INSERT INTO " + this._tablePath[0] + " VALUES (null, " + this._sessionID +
", " + metricsObject.metricsComponentData[i].timeStamp +
", '" + metricsObject.metricsComponentData[i].component + "'" + ")";
break;
case MetricsCollator.MOUSE_OUT:
this._query_txt = "INSERT INTO " + this._tablePath[1] + " VALUES (null, " + this._sessionID +
", " + metricsObject.metricsComponentData[i].timeStamp +
", '" + metricsObject.metricsComponentData[i].component + "'" + ")";
break;
} // end switch
executeQuery(this._query_txt);
} // end loop
、私は実行していたクラスを、私は擬似スレッドの例に見てきましたが、彼らはすべてのスプライトやステージのインスタンスを必要としますこのコードは、表示クラスではありません、私は本当にこのクラスにステージのインスタンスを渡すしたくない、汚いようです! ;-)
誰にでもアイデアはありますか?
、実行は、それらが終了するのを待つために停止します! – grapefrukt
私は明確にすることができますか? handleTick()からstartWorking()を呼び出して時間の増分でDBに保存する必要がありますか?したがって、DBの節約をループから取り除く必要がありますか?あなたの素早い応答のための乾杯 –
いいえ。外部からstartWorkingを呼び出すと、あなたがそれを止めるまで、handleTickはタイマーによって呼び出されます。これにより、「スレッディング」が外部に透過的になります。通常どおりにセーブコールを行い、これにより、時間の経過とともにそれが広がります。 – grapefrukt