想请教一下各位前辈
小弟目前 有上万笔形态为long的资料,从json data 转换为object 时
会依照分类放在HashSet<Long> 里面
会用HashSet的原因是免排序,
但是需要快速查出某个值是不是成员 (使用contain(long id)这个方法
因为资料蛮多的,又把long wrap为Long,占用了不少内存
想请问有没有更节省内存也可以快速判断的方式来存放这些资料呢?
Guava整包 太肥了,不太适合在android 上跑
要省内存可能要将Set分类 而不是全部用同一个存当然还有个偷懒方式丢给DB去处理
作者:
LaPass (LaPass)
2015-12-17 19:52:00丢给db只可能更慢 囧还有你的顾虑是多余的,这种单一变量的东西,即使上万笔,也不会吃多少效能跟内存,大概吃料 8*10000~ 80kb而已
作者: sivid (go back to sleep) 2015-12-17 23:30:00
bloom filter, radix sort, 还有自己手动切partition几万个Long是应该没问题, 有疑虑的话先measure吧
你直接用吧 真的发现慢在这里再说吧没记错的话HashSet找内容是O(1) 才几万笔应该还好
一个set 约万笔,然后有10 个set 左右 XDHashSet 搜寻真的很快,我不怀疑的目前发现从json 字串转成 object 超花时间 orz
json 转成 long 会多花时间?资料简单就写个简易 parser处理就好
作者:
LaPass (LaPass)
2015-12-18 12:18:00json转物件是用哪一套? java的json转换有一堆libary要转物件的话大多是用反射去弄的吧
目前是Gson, 这些code是在android 跑的在部分手机上来说,真的不太快基本上会让用户感到有点延迟
作者:
yyc1217 (somo)
2015-12-18 19:34:00Martin Fowler最近有篇文章 refactoring document load刚好就是在谈字串转object的问题 好像是要用时再转
作者:
LaPass (LaPass)
2015-12-18 19:43:00Gson还蛮快的阿.... 你是不是转换一次就new一次Gson?
Retrofit 应该不会干这种事XD@yyc1217 马上就需要用到XD 而且是经常性的@asdhhhman 我是一次就拿到好几笔的set
作者:
yyc1217 (somo)
2015-12-19 13:54:00当字串来处理不要转成Long呢?有个library叫Trove4j,有个TLongHashSet可以用primitive value当key
作者: marsyang1 (Mars) 2015-12-24 09:21:00
看要不要试试Guava的ImmutableSet