2016-05-31 2 views
0

私は大きなスイッチケースを持っています。それぞれのケースでは、特定のデータベースオブジェクトを作成するために必要なものを集め、realm.createオブジェクトを作成します。永続性を保証する最も簡単な方法は、realm.write内のスイッチ/ケース全体をチャックすることです。これにより、それぞれのケース内で実行されるコードが遅くなりますか?レルムネイティブのレルム内でコードを書くと、パフォーマンスが低下しますか?

realm.write(() => { 
    let x, y; 
    switch (condition) { 
    case 'x': 
     x = //some work to generate the x object 
     realm.create('X', x); 
     break; 
    case 'y': 
     y = // some work to generate the y object 
     realm.create('Y', y); 
     break; 
    } 
}); 

代替が使用されますどのようなケースの作成と矢印の機能を保持する変数を使用し、そして最後にその矢印の機能をrealm.write呼び出すことだけです。これを行うのが楽しいですが、何か有益かどうか不思議です。

let x, y, writeFunc; 
switch (condition) { 
    case 'x': 
    x = //some work to generate the x object 
    writeFunc =() => realm.create('X', x); 
    break; 
    case 'y': 
    y = // some work to generate the y object 
    writeFunc =() => realm.create('Y', y); 
    break; 
} 
realm.write(writeFunc); 

答えて

1

どちらのコード例もほぼ同じです。書き込みブロック内で他のコードを実行しても問題ありません。そのため、最もクリーンな/最も簡単なオプションを選択します。

パフォーマンスについて考えるとき、本当に心配する必要があるのは、あまりにも多くのトランザクションを処理することだけです。理想的には、それぞれのトランザクションを処理するのではなく、複数の操作(作成、突然変異、削除)を一括書き込みトランザクション内でバッチすることが必要です。複数のオブジェクトを同時に書くときは、物事を大幅に高速化することができます。多くの操作を実行する場合は、バッチ処理を行うとパフォーマンスに大きな影響を与えます。

関連する問題