Chunk by range

pull/217/head
M66B 11 months ago
parent 20d3449d32
commit 5e74805997

@ -4172,7 +4172,22 @@ class Core {
if (chunk_size < 200 && if (chunk_size < 200 &&
(account.isGmail() || account.isOutlook())) (account.isGmail() || account.isOutlook()))
chunk_size = 200; chunk_size = 200;
List<List<Pair<Long, Long>>> chunks = Helper.chunkList(ranges, chunk_size);
List<List<Pair<Long, Long>>> chunks = new ArrayList<>();
int s = 0;
List<Pair<Long, Long>> r = new ArrayList<>();
for (Pair<Long, Long> range : ranges) {
long n = range.second - range.first + 1;
if (s + n > range_size) {
chunks.addAll(Helper.chunkList(r, chunk_size));
s = 0;
r.clear();
}
s += n;
r.add(range);
}
chunks.addAll(Helper.chunkList(r, chunk_size));
Log.i(folder.name + " executing uid fetch count=" + uids.size() + Log.i(folder.name + " executing uid fetch count=" + uids.size() +
" ranges=" + ranges.size() + " chunks=" + chunks.size() + " ranges=" + ranges.size() + " chunks=" + chunks.size() +

@ -3789,6 +3789,8 @@ public class Helper {
} }
static <T> List<List<T>> chunkList(List<T> list, int size) { static <T> List<List<T>> chunkList(List<T> list, int size) {
if (list == null || list.isEmpty())
return new ArrayList<>();
List<List<T>> result = new ArrayList<>(list.size() / size); List<List<T>> result = new ArrayList<>(list.size() / size);
for (int i = 0; i < list.size(); i += size) for (int i = 0; i < list.size(); i += size)
result.add(list.subList(i, i + size < list.size() ? i + size : list.size())); result.add(list.subList(i, i + size < list.size() ? i + size : list.size()));

Loading…
Cancel
Save