2017-03-26 18 views
0

Firebaseを使用してAndroidアプリを開発する際、我々は読み取りまたはFirebaseリアルタイムデータベースに書き込むために、このような何かをするだろう:上記の例でFirebaseDatabase.getInstance()を複数回初期化するとパフォーマンスに影響しますか?

Line 1: FirebaseDatabase database = FirebaseDatabase.getInstance(); 
Line 2: DatabaseReference myRef = database.getReference("A").child("B").child("C"); 
Line 3: myRef.setValue(50); 

、私たちは「A /の場所に「50」を書いていますB/C "と書かれていますが、以前の書込み操作の後に別の場所に書き込む場合(「A/D/E」とします)、行1〜3を「Firebaseデータベースデータベース」は既に1行目(「アプローチ2」を参照)で既に宣言されているので、同じファイルの下の別の場所(下の「アプローチ1」を参照)、または2〜3行目だけを書くべきですか?

アプローチ1:

Line 1: FirebaseDatabase database1 = FirebaseDatabase.getInstance(); 
Line 2: DatabaseReference myRef1 = database1.getReference("A").child("B").child("C"); 
Line 3: myRef1.setValue(50); 
... 
Line 4: FirebaseDatabase database2 = FirebaseDatabase.getInstance(); 
Line 5: DatabaseReference myRef2 = database2.getReference("A").child("D").child("E"); 
Line 6: myRef2.setValue(60); 

アプローチ2:

Line 1: FirebaseDatabase database = FirebaseDatabase.getInstance(); 
Line 2: DatabaseReference myRef1 = database.getReference("A").child("B").child("C"); 
Line 3: myRef1.setValue(50); 
... 
Line 4: DatabaseReference myRef2 = database.getReference("A").child("D").child("E"); 
Line 5: myRef2.setValue(60); 

私の質問は、より良いパフォーマンスになります上記のアプローチのどちらですか?すべての書き込み操作でFirebaseDatabase.getInstance()を何度も作成すると、パフォーマンスが向上します(したがって、アプローチ1はより良いでしょう)。それともパフォーマンスが悪くなる(アプローチ2が良い)か?

ありがとうございます!

+0

メインスレッドで包括的なメソッドを呼び出すと、アプリケーションが遅くなります。メインスレッドの場合は、アプローチ2が最適です。アプローチ2が最良のietherの方法ですが、非同期スレッドを使用する場合はアプローチ1を実行できますが、2は依然として最高で最速です。しかし、アプローチ1は、メインスレッド上にある場合、パフォーマンスに最も影響します。 – Zoe

+0

@LunarWatcher setValuesは、タスクが別の方法で非同期で動作するようにタスクを返します。また、 'getInstance()'は同じインスタンスを返して両方のアプローチが同じになるようにします – X3Btel

+0

両方のアプローチで2つの書き込みをするのではなく、1つの読み取りと1つの書き込みがあります(読み取り操作は値が –

答えて

2

これをご覧ください。answer最初のgetInstance()だけが実際の作業を行います。その後、毎回getInstance()の場合はパフォーマンスの向上/損失はなく、同じインスタンスを再利用します。 Firebaseはバックグラウンドで作業を最適化します。

関連する問題