perf(core): optimize queryVerticesByIds for only-one-id query by javeme · Pull Request #2859 · apache/hugegraph
The same optimization pattern is duplicated for edges and vertices. Consider creating a generic helper method to reduce code duplication:
private <T extends HugeElement> Map<Id, T> querySingleElement( Id id, HugeType type, Map<Id, T> added, Map<Id, T> updated, Map<Id, T> removed, Function<IdQuery, Iterator<T>> backendQuery) { if (id == null) { return ImmutableMap.of(); } // Check local transaction state if (removed.containsKey(id)) { return ImmutableMap.of(); } T element = added.get(id); if (element == null) { element = updated.get(id); } if (element != null && !element.expired()) { return ImmutableMap.of(id, element); } // Query backend IdQuery query = new IdQuery.OneIdQuery(type, id); T backendElement = QueryResults.one(backendQuery.apply(query)); return backendElement == null ? ImmutableMap.of() : ImmutableMap.of(id, backendElement); }
This would eliminate the duplication between vertex and edge query methods.