11package net .laprun .sustainability .power .measure ;
22
33import java .time .Duration ;
4- import java .util .HashSet ;
5- import java .util .Set ;
4+ import java .util .BitSet ;
65
76import org .apache .commons .math3 .util .FastMath ;
87
@@ -13,7 +12,7 @@ public class OngoingPowerMeasure implements PowerMeasure {
1312 private final SensorMetadata sensorMetadata ;
1413 private final long startedAt ;
1514 private final double [] averages ;
16- private final Set < Integer > nonZeroComponents ;
15+ private final BitSet nonZeroComponents ;
1716 private final int [] totalComponents ;
1817 private final int totalIndex ;
1918 private double minTotal = Double .MAX_VALUE ;
@@ -35,7 +34,7 @@ public OngoingPowerMeasure(SensorMetadata sensorMetadata) {
3534 totalIndex = numComponents ;
3635 averages = new double [measuresNb ];
3736 // we don't need to record the total component as a non-zero component since it's almost never zero and we compute the std dev separately
38- nonZeroComponents = new HashSet <> (numComponents );
37+ nonZeroComponents = new BitSet (numComponents );
3938 totalComponents = sensorMetadata .totalComponents ();
4039 }
4140
@@ -56,7 +55,7 @@ public void recordMeasure(double[] components) {
5655 final var componentValue = components [component ];
5756 // record that the value is not zero
5857 if (componentValue != 0 ) {
59- nonZeroComponents .add (component );
58+ nonZeroComponents .set (component );
6059 }
6160 recordComponentValue (component , componentValue );
6261 averages [component ] = averages [component ] == 0 ? componentValue
0 commit comments