Skip to content

Commit

Permalink
Merge pull request #3330 from ingef/feature/faster-matching-stats
Browse files Browse the repository at this point in the history
unroll span in MatchingStats.Entry#addEvent
  • Loading branch information
awildturtok authored Mar 6, 2024
2 parents a2f286a + b731823 commit fecb070
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,20 @@ public static class Entry {
@JsonIgnore
private final Set<String> foundEntities = new HashSet<>();
private long numberOfEntities;
private CDateRange span;
private int minDate = Integer.MAX_VALUE;
private int maxDate = Integer.MIN_VALUE;

@JsonIgnore
public CDateRange getSpan() {
if(minDate == Integer.MAX_VALUE && maxDate == Integer.MIN_VALUE) {
return null;
}

return CDateRange.of(
minDate == Integer.MAX_VALUE ? Integer.MIN_VALUE : minDate,
maxDate == Integer.MIN_VALUE ? Integer.MAX_VALUE : maxDate
);
}

public void addEvent(Table table, Bucket bucket, int event, String entityForEvent) {
numberOfEvents++;
Expand All @@ -103,7 +115,14 @@ public void addEvent(Table table, Bucket bucket, int event, String entityForEven
}

final CDateRange time = bucket.getAsDateRange(event, c);
span = time.spanClosed(span);

if (time.hasUpperBound()){
maxDate = Math.max(time.getMaxValue(), maxDate);
}

if (time.hasLowerBound()){
minDate = Math.min(time.getMinValue(), minDate);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import static org.assertj.core.api.Assertions.assertThat;

import com.bakdata.conquery.models.common.daterange.CDateRange;
import com.bakdata.conquery.models.datasets.Column;
import com.bakdata.conquery.models.datasets.Table;
import com.bakdata.conquery.models.datasets.concepts.MatchingStats;
Expand All @@ -22,13 +21,13 @@ public void entitiesCountTest() {

assertThat(stats.countEntities()).isEqualTo(0);

stats.putEntry(workerId1, new MatchingStats.Entry(5, 5, CDateRange.of(10, 20)));
stats.putEntry(workerId1, new MatchingStats.Entry(5, 5, 10, 20));
assertThat(stats.countEntities()).isEqualTo(5);

stats.putEntry(workerId1, new MatchingStats.Entry(5, 8, CDateRange.of(10, 20)));
stats.putEntry(workerId1, new MatchingStats.Entry(5, 8, 10, 20));
assertThat(stats.countEntities()).isEqualTo(8);

stats.putEntry(workerId2, new MatchingStats.Entry(5, 2, CDateRange.of(10, 20)));
stats.putEntry(workerId2, new MatchingStats.Entry(5, 2, 10, 20));
assertThat(stats.countEntities()).isEqualTo(10);


Expand Down

0 comments on commit fecb070

Please sign in to comment.