#android #firebase #garbage-collection #firebase-realtime-database
#Android #firebase #сбор мусора #firebase-база данных в реальном времени
Вопрос:
Какой из этих двух фрагментов кода более эффективен или они оба одинаковые?
предположим, что база данных выглядит следующим образом:
root
- userUID
-- messageUID
---- text:""
---- sentTo:""
-- messageUID2 {...}
-- messageUID3 {...}
-- messageUID4 {...}
тогда первое, что я попробовал, было это
DatabaseReference ref = FirebaseDatabase.getInstance().child(userId).addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
//..
ArrayList<Message> messageList = new ArrayList<>();
for(DataSnapshot messageSnapshot: dataSnapshot.getChildren()){
Message message = messageSnapshot.getValue(Message.class);
messageList.add(message);
}
//..
}
@Override
public void onCancelled(DatabaseError databaseError){
//..
}
});
но потом я заметил, что буду создавать много объектов сообщений. Будет ли это более эффективно?
DatabaseReference ref = FirebaseDatabase.getInstance().child(userId).addListenerForSingleValueEvent(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
//..
ArrayList<Message> messageList = new ArrayList<>();
Message message = new Message("","");
for(DataSnapshot messageSnapshot: dataSnapshot.getChildren()){
message.setText(messageSnapshot.getValue("text");
message.setSentTo(messageSnapshot.getValue("sentTo");
messageList.add(message);
}
//..
}
@Override
public void onCancelled(DatabaseError databaseError){
//..
}
});
Комментарии:
1. Мне это кажется преждевременной микрооптимизацией. Большинство современных виртуальных машин в любом случае оптимизируют
Message
этот узкий цикл.