in analysis/gc-log/src/main/java/org/eclipse/jifa/gclog/model/GCModel.java [240:264]
private int binarySearchEventIndex(List<? extends TimedEvent> eventList, double time, boolean searchLow) {
if (searchLow && time <= getStartTime()) {
return 0;
} else if (!searchLow && time >= getEndTime()) {
return eventList.size();
}
TimedEvent eventForSearching = new TimedEvent(time);
int result = Collections.binarySearch(eventList, eventForSearching, Comparator.comparingDouble(TimedEvent::getStartTime));
if (result < 0) {
return -(result + 1);
} else {
if (searchLow) {
while (result >= 0 && eventList.get(result).getStartTime() >= time) {
result--;
}
return result + 1;
} else {
while (result < eventList.size() && eventList.get(result).getStartTime() <= time) {
result++;
}
return result;
}
}
}