Browse Source

reverted sort method

pull/12991/head
dashevchenko 2 years ago
parent
commit
6f61ab64a7
  1. 23
      common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TenantRepo.java

23
common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TenantRepo.java

@ -370,19 +370,18 @@ public class TenantRepo {
// Collections.reverse(result); // Collections.reverse(result);
// result = result.subList(offset, requiredSize); // result = result.subList(offset, requiredSize);
// IMPLEMENTATION THAT IS BASED ON TREE SET (For offset + query.getPageSize() << totalSize) // IMPLEMENTATION THAT IS BASED ON TREE SET (For offset + query.getPageSize() << totalSize)
// var requiredSize = Math.min(offset + query.getPageSize(), totalSize);
// TreeSet<SortableEntityData> topNSet = new TreeSet<>(comparator);
// for (SortableEntityData sp : data) {
// topNSet.add(sp);
// if (topNSet.size() > requiredSize) {
// topNSet.pollLast();
// }
// }
// var result = topNSet.stream().skip(offset).limit(query.getPageSize()).collect(Collectors.toList());
// IMPLEMENTATION THAT IS BASED ON TIM SORT (For offset + query.getPageSize() > totalSize / 2)
var requiredSize = Math.min(offset + query.getPageSize(), totalSize); var requiredSize = Math.min(offset + query.getPageSize(), totalSize);
data.sort(comparator); TreeSet<SortableEntityData> topNSet = new TreeSet<>(comparator);
var result = data.subList(offset, requiredSize); for (SortableEntityData sp : data) {
topNSet.add(sp);
if (topNSet.size() > requiredSize) {
topNSet.pollLast();
}
}
var result = topNSet.stream().skip(offset).limit(query.getPageSize()).collect(Collectors.toList());
// IMPLEMENTATION THAT IS BASED ON TIM SORT (For offset + query.getPageSize() > totalSize / 2)
// data.sort(comparator);
// var result = data.subList(offset, endIndex);
log.trace("EDQ Sorted in {}", TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTs)); log.trace("EDQ Sorted in {}", TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTs));
return new PageData<>(toQueryResult(result, query, ctx), totalPages, totalSize, totalSize > requiredSize); return new PageData<>(toQueryResult(result, query, ctx), totalPages, totalSize, totalSize > requiredSize);
} }

Loading…
Cancel
Save