2
我每100K值需要被在給定的時間計算訪問,即使largeHeap要求的幾個大雙和長數組了Android OS犯規給了我足夠的內存和我不斷收到大部分測試設備的內存溢出的異常。所以我去研究各種方法來解決這個問題,並根據答案我從Waldheinz我previous question我實現了一個基於文件的數組了,使用RandomAccessMemory得到一個通道,然後將其使用MappedByteBuffer映射的建議,並使用MappedByteBuffer asLongBuffer或asDoubleBuffer。這工作完美,我100%消除了outofmemory異常。但表現很差。我得到很多的電話來獲得(部分指標)的拍攝每一個,因此用戶的先進經驗是毀了約5-15毫秒如何提高MappedByteBuffer獲得我的用例性能?
一些有用的信息:
- 我使用陣列上的二進制搜索找到開始和結束索引,然後我從開始的線性循環結束
- 我增加了打印命令的任何get()方法調用,需要更多然後5毫秒完成(打印出時間花了,要求指數最後請求的索引),似乎所有的二進制搜索請求都被打印出來,並且很少有線性請求也被打印出來。
如何讓它走得更快有什麼建議?
磁盤上的二進制搜索無法正常工作。這就是爲什麼我們有B型樹。 – EJP
考慮使用較少的內存。你可以使用花車而不是雙打? – maaartinus
100k雙打「僅」6.25MB。數據集真的不適合內存嗎? – EJP