大佬教程收集整理的这篇文章主要介绍了android – 在领域存储长列表的对象最有效的方式是什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
基准显示以下结果.如图所示,领域比Snappydb慢100-200倍.
我正在做的是先创建10,000个对象,然后将它们存储到数据库中.所以,在我的代码中,我以这种方式存储一个Booking对象(有一个循环遍历10,000次):
public void storeBooking(final Booking booking) { mRealm.executetransaction(new Realm.transaction() { @Override public void execute(Realm realm) { Booking realmBooking = realm.createObject(Booking.class); realmBooking.setId(booking.getId()); realmBooking.setCode(booking.getCode()); realmBooking.setFareLowerBound(booking.getFareLowerBound()); realmBooking.setFareUpperBound(booking.getFareUpperBound()); realmBooking.setPhonenumber(booking.getPhoneNumber()); realmBooking.setPickUpTime(booking.getPickUpTime()); realmBooking.setrequestedTaxiTypename(booking.getrequestedTaxiTypename()); realmBooking.setTaxiTypEID(booking.getTaxiTypEID()); } }); }
任何想法将不胜感激.谢谢.
更新
这是用于存储Booking对象的Snappydb方法.
public void storeBooking(final String key,final Booking booking) { try { mSnappyDb.put(key,booking); } catch (SnappydbException E) { e.printStackTrace(); } }
更新
技术上正确的方法应该是:
public void storeBookings(final List<Booking> bookings) { mRealm.executetransaction(new Realm.transaction() { @Override public void execute(Realm realm) { realm.insertOrupdate(bookings); } }); }
在大多数情况下,当保存的对象与原始对象不一样时,我所做的@R_197_9811@:
public void storeBookings(final List<Booking> bookings) { mRealm.executetransaction(new Realm.transaction() { @Override public void execute(Realm realm) { RealmBook realmBook = new RealmBook(); for(Booking booking : bookings) { realmBook = mapper.toRealm(booking,realmBook); // does not create new instance realm.insertOrupdate(realmBook); } } }); }
以上是大佬教程为你收集整理的android – 在领域存储长列表的对象最有效的方式是什么?全部内容,希望文章能够帮你解决android – 在领域存储长列表的对象最有效的方式是什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。