Skip to content

Commit f51ff31

Browse files
Remote Spanning Tree stats
1 parent 56c195f commit f51ff31

File tree

6 files changed

+81
-147
lines changed

6 files changed

+81
-147
lines changed

procedures/algorithms-facade/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/SpanningTreeResultBuilderForStatsMode.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,20 @@ public Stream<SpanningTreeStatsResult> build(
4141
Optional<SpanningTree> result,
4242
AlgorithmProcessingTimings timings
4343
) {
44-
var builder = new SpanningTreeStatsResult.Builder();
4544

4645
if (result.isEmpty()) {
47-
return Stream.of(builder.build());
46+
return Stream.of(SpanningTreeStatsResult.emptyFrom(timings, configuration.toMap()));
4847
}
4948

5049
var spanningTree = result.get();
5150

52-
builder.withEffectiveNodeCount(spanningTree.effectiveNodeCount());
53-
builder.withTotalWeight(spanningTree.totalWeight());
54-
55-
builder.withComputeMillis(timings.computeMillis);
56-
builder.withPreProcessingMillis(timings.preProcessingMillis);
57-
builder.withConfig(configuration);
58-
return Stream.of(builder.build());
51+
var statsResult = new SpanningTreeStatsResult(
52+
timings.preProcessingMillis,
53+
timings.computeMillis,
54+
spanningTree.effectiveNodeCount(),
55+
spanningTree.totalWeight(),
56+
configuration.toMap()
57+
);
58+
return Stream.of(statsResult);
5959
}
6060
}

procedures/algorithms-facade/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/SpanningTreeResultBuilderForWriteMode.java

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,26 +37,20 @@ public SpanningTreeWriteResult build(
3737
AlgorithmProcessingTimings timings,
3838
Optional<RelationshipsWritten> metadata
3939
) {
40-
var builder = new SpanningTreeWriteResult.Builder();
41-
4240
if (result.isEmpty()) {
43-
return builder.build();
41+
return SpanningTreeWriteResult.emptyFrom(timings, configuration.toMap());
4442
}
4543

4644
var spanningTree = result.get();
4745

48-
builder
49-
.withEffectiveNodeCount(spanningTree.effectiveNodeCount())
50-
.withTotalWeight(spanningTree.totalWeight());
51-
52-
builder.withComputeMillis(timings.computeMillis);
53-
builder.withPreProcessingMillis(timings.preProcessingMillis);
54-
builder.withWriteMillis(timings.sideEffectMillis);
55-
56-
metadata.ifPresent(rw -> builder.withRelationshipsWritten(rw.value()));
57-
58-
builder.withConfig(configuration);
59-
60-
return builder.build();
46+
return new SpanningTreeWriteResult(
47+
timings.preProcessingMillis,
48+
timings.computeMillis,
49+
timings.sideEffectMillis,
50+
spanningTree.effectiveNodeCount(),
51+
metadata.get().value(),
52+
spanningTree.totalWeight(),
53+
configuration.toMap()
54+
);
6155
}
6256
}

procedures/algorithms-facade/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/stubs/SpanningTreeResultBuilderForMutateMode.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,25 +38,22 @@ public SpanningTreeMutateResult build(
3838
AlgorithmProcessingTimings timings,
3939
Optional<RelationshipsWritten> metadata
4040
) {
41-
var builder = new SpanningTreeMutateResult.Builder();
4241

4342
if (result.isEmpty()) {
44-
return builder.build();
43+
return SpanningTreeMutateResult.emptyFrom(timings, configuration.toMap());
4544
}
4645

4746
var spanningTree = result.get();
4847

49-
builder.withEffectiveNodeCount(spanningTree.effectiveNodeCount());
50-
builder.withTotalWeight(spanningTree.totalWeight());
48+
return new SpanningTreeMutateResult(
49+
timings.preProcessingMillis,
50+
timings.computeMillis,
51+
timings.sideEffectMillis,
52+
spanningTree.effectiveNodeCount(),
53+
metadata.get().value(),
54+
spanningTree.totalWeight(),
55+
configuration.toMap()
56+
);
5157

52-
builder.withComputeMillis(timings.computeMillis);
53-
builder.withPreProcessingMillis(timings.preProcessingMillis);
54-
builder.withMutateMillis(timings.sideEffectMillis);
55-
56-
metadata.ifPresent(rw -> builder.withRelationshipsWritten(rw.value()));
57-
58-
builder.withConfig(configuration);
59-
60-
return builder.build();
6158
}
6259
}

procedures/facade-api/path-finding-facade-api/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/SpanningTreeMutateResult.java

Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -19,51 +19,34 @@
1919
*/
2020
package org.neo4j.gds.procedures.algorithms.pathfinding;
2121

22-
import org.neo4j.gds.result.AbstractResultBuilder;
22+
import org.neo4j.gds.applications.algorithms.machinery.AlgorithmProcessingTimings;
23+
import org.neo4j.gds.procedures.algorithms.results.ModeResult;
2324

2425
import java.util.Map;
2526

26-
public final class SpanningTreeMutateResult extends SpanningTreeStatsResult {
27-
public final long mutateMillis;
28-
public final long relationshipsWritten;
29-
30-
public SpanningTreeMutateResult(
27+
public record SpanningTreeMutateResult(
3128
long preProcessingMillis,
3229
long computeMillis,
3330
long mutateMillis,
3431
long effectiveNodeCount,
3532
long relationshipsWritten,
3633
double totalCost,
3734
Map<String, Object> configuration
38-
) {
39-
super(preProcessingMillis, computeMillis, effectiveNodeCount, totalCost, configuration);
40-
this.mutateMillis = mutateMillis;
41-
this.relationshipsWritten = relationshipsWritten;
42-
}
43-
44-
public static class Builder extends AbstractResultBuilder<SpanningTreeMutateResult> {
45-
long effectiveNodeCount;
46-
double totalWeight;
35+
) implements ModeResult {
4736

48-
public void withEffectiveNodeCount(long effectiveNodeCount) {
49-
this.effectiveNodeCount = effectiveNodeCount;
50-
}
51-
52-
public void withTotalWeight(double totalWeight) {
53-
this.totalWeight = totalWeight;
54-
}
55-
56-
@Override
57-
public SpanningTreeMutateResult build() {
58-
return new SpanningTreeMutateResult(
59-
preProcessingMillis,
60-
computeMillis,
61-
mutateMillis,
62-
effectiveNodeCount,
63-
relationshipsWritten,
64-
totalWeight,
65-
config.toMap()
66-
);
67-
}
37+
public static SpanningTreeMutateResult emptyFrom(
38+
AlgorithmProcessingTimings timings,
39+
Map<String, Object> configuration
40+
)
41+
{
42+
return new SpanningTreeMutateResult(
43+
timings.preProcessingMillis,
44+
timings.computeMillis,
45+
0,
46+
0,
47+
0,
48+
0,
49+
configuration
50+
);
6851
}
6952
}

procedures/facade-api/path-finding-facade-api/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/SpanningTreeStatsResult.java

Lines changed: 15 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,50 +19,28 @@
1919
*/
2020
package org.neo4j.gds.procedures.algorithms.pathfinding;
2121

22-
import org.neo4j.gds.procedures.algorithms.results.StandardModeResult;
23-
import org.neo4j.gds.result.AbstractResultBuilder;
22+
import org.neo4j.gds.applications.algorithms.machinery.AlgorithmProcessingTimings;
23+
import org.neo4j.gds.procedures.algorithms.results.ModeResult;
2424

2525
import java.util.Map;
2626

27-
public class SpanningTreeStatsResult extends StandardModeResult {
28-
public final long effectiveNodeCount;
29-
public final double totalWeight;
30-
31-
public SpanningTreeStatsResult(
27+
public record SpanningTreeStatsResult(
3228
long preProcessingMillis,
3329
long computeMillis,
3430
long effectiveNodeCount,
3531
double totalWeight,
3632
Map<String, Object> configuration
37-
) {
38-
super(preProcessingMillis, computeMillis, configuration);
39-
this.effectiveNodeCount = effectiveNodeCount;
40-
this.totalWeight = totalWeight;
41-
}
42-
43-
public static final class Builder extends AbstractResultBuilder<SpanningTreeStatsResult> {
44-
private long effectiveNodeCount;
45-
private double totalWeight;
46-
47-
@Override
48-
public SpanningTreeStatsResult build() {
49-
return new SpanningTreeStatsResult(
50-
preProcessingMillis,
51-
computeMillis,
52-
effectiveNodeCount,
53-
totalWeight,
54-
config.toMap()
55-
);
56-
}
57-
58-
public Builder withEffectiveNodeCount(long effectiveNodeCount) {
59-
this.effectiveNodeCount = effectiveNodeCount;
60-
return this;
61-
}
62-
63-
public Builder withTotalWeight(double totalWeight) {
64-
this.totalWeight = totalWeight;
65-
return this;
66-
}
33+
) implements ModeResult {
34+
35+
36+
static SpanningTreeStatsResult emptyFrom(AlgorithmProcessingTimings timings, Map<String, Object> configuration)
37+
{
38+
return new SpanningTreeStatsResult(
39+
timings.preProcessingMillis,
40+
timings.computeMillis,
41+
0,
42+
0,
43+
configuration
44+
);
6745
}
6846
}

procedures/facade-api/path-finding-facade-api/src/main/java/org/neo4j/gds/procedures/algorithms/pathfinding/SpanningTreeWriteResult.java

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,53 +19,35 @@
1919
*/
2020
package org.neo4j.gds.procedures.algorithms.pathfinding;
2121

22-
import org.neo4j.gds.result.AbstractResultBuilder;
22+
import org.neo4j.gds.applications.algorithms.machinery.AlgorithmProcessingTimings;
23+
import org.neo4j.gds.procedures.algorithms.results.ModeResult;
2324

2425
import java.util.Map;
2526

26-
public final class SpanningTreeWriteResult extends SpanningTreeStatsResult {
27-
public final long writeMillis;
28-
public final long relationshipsWritten;
29-
30-
private SpanningTreeWriteResult(
27+
public record SpanningTreeWriteResult(
3128
long preProcessingMillis,
3229
long computeMillis,
3330
long writeMillis,
3431
long effectiveNodeCount,
3532
long relationshipsWritten,
3633
double totalCost,
3734
Map<String, Object> configuration
38-
) {
39-
super(preProcessingMillis, computeMillis, effectiveNodeCount, totalCost, configuration);
40-
this.writeMillis = writeMillis;
41-
this.relationshipsWritten = relationshipsWritten;
42-
}
43-
44-
public static class Builder extends AbstractResultBuilder<SpanningTreeWriteResult> {
45-
46-
long effectiveNodeCount;
47-
double totalWeight;
35+
) implements ModeResult {
4836

49-
public Builder withEffectiveNodeCount(long effectiveNodeCount) {
50-
this.effectiveNodeCount = effectiveNodeCount;
51-
return this;
52-
}
53-
54-
public void withTotalWeight(double totalWeight) {
55-
this.totalWeight = totalWeight;
56-
}
57-
58-
@Override
59-
public SpanningTreeWriteResult build() {
60-
return new SpanningTreeWriteResult(
61-
preProcessingMillis,
62-
computeMillis,
63-
writeMillis,
64-
effectiveNodeCount,
65-
relationshipsWritten,
66-
totalWeight,
67-
config.toMap()
68-
);
69-
}
37+
public static SpanningTreeWriteResult emptyFrom(
38+
AlgorithmProcessingTimings timings,
39+
Map<String, Object> configuration
40+
)
41+
{
42+
return new SpanningTreeWriteResult(
43+
timings.preProcessingMillis,
44+
timings.computeMillis,
45+
0,
46+
0,
47+
0,
48+
0,
49+
configuration
50+
);
7051
}
52+
7153
}

0 commit comments

Comments
 (0)