summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-05-28 10:05:19 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-05-28 10:05:19 +0000
commit49adf52e5aa0337017ce4b4cbdf06b1dbf401b02 (patch)
tree47e00d290bf5e934adc93aaa065e06d6b5444af9 /container-search
parente6199f6709e94eca47ff4636ab2d87dafffc3059 (diff)
Add the expected table for documentations and assert on changes.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java40
1 files changed, 34 insertions, 6 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java
index bd06a34622f..a0f1b32ec13 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/TopKEstimatorTest.java
@@ -103,23 +103,51 @@ public class TopKEstimatorTest {
assertEquals(4304, estimator.estimateK(40000, 10));
assertEquals(8429, estimator.estimateK(80000, 10));
assertEquals(10480, estimator.estimateK(100000, 10));
+ String expected =
+ "Prob/Hits: 1.0000000000 0.9999000000 0.9999900000 0.9999990000 0.9999999000 0.9999999900 0.9999999990 0.9999999999\n" +
+ " 10: 10.000 6.000 7.000 8.000 9.000 10.000 10.000 10.000\n" +
+ " 20: 10.000 4.500 5.000 5.500 6.500 7.000 7.500 8.000\n" +
+ " 40: 10.000 3.500 4.000 4.250 4.750 5.250 5.500 6.000\n" +
+ " 80: 10.000 2.750 3.000 3.250 3.625 3.875 4.250 4.500\n" +
+ " 100: 10.000 2.600 2.800 3.100 3.300 3.600 3.900 4.200\n" +
+ " 200: 10.000 2.100 2.250 2.450 2.650 2.800 3.000 3.200\n" +
+ " 400: 10.000 1.775 1.900 2.025 2.150 2.275 2.425 2.575\n" +
+ " 800: 10.000 1.538 1.625 1.713 1.813 1.900 2.000 2.100\n" +
+ " 1000: 10.000 1.480 1.560 1.640 1.720 1.810 1.890 1.990\n" +
+ " 2000: 10.000 1.340 1.395 1.450 1.510 1.570 1.630 1.695\n" +
+ " 4000: 10.000 1.240 1.280 1.320 1.360 1.403 1.445 1.493\n" +
+ " 8000: 10.000 1.170 1.198 1.225 1.254 1.284 1.315 1.348\n" +
+ " 10000: 10.000 1.152 1.177 1.202 1.227 1.254 1.282 1.311\n" +
+ " 20000: 10.000 1.108 1.125 1.143 1.161 1.180 1.199 1.220\n" +
+ " 40000: 10.000 1.076 1.088 1.101 1.114 1.127 1.141 1.156\n" +
+ " 80000: 10.000 1.054 1.062 1.071 1.080 1.090 1.100 1.110\n" +
+ " 100000: 10.000 1.048 1.056 1.064 1.072 1.080 1.089 1.098\n";
+ assertEquals(expected, dumpProbability(10));
+ }
+
+ /**
+ * This make a table showing how many more hits will be fetched as a factor of hits requested.
+ * It shows how it varies with probability and hits requested for a given number of partitions.
+ */
+ private String dumpProbability(int numPartitions) {
+ TopKEstimator estimator = new TopKEstimator(30, 0.9999);
int [] K = {10, 20, 40, 80, 100, 200, 400, 800, 1000, 2000, 4000, 8000, 10000, 20000, 40000, 80000, 100000};
double [] P = {1.0, 0.9999, 0.99999, 0.999999, 0.9999999, 0.99999999, 0.999999999, 0.9999999999};
- int n = 10;
+ int n = numPartitions;
StringBuilder sb = new StringBuilder();
sb.append(String.format("Prob/Hits:"));
for (double p : P) {
sb.append(String.format(" %1.10f", p));
}
- System.out.println(sb.toString());
+ sb.append("\n");
for (int k : K) {
- sb = new StringBuilder();
- sb.append(String.format("%11d:", k));
+ sb.append(String.format("%9d:", k));
for (double p : P) {
- sb.append(String.format(" %2.3f ", (double)(estimator.estimateK(k, n, p)*n) / k));
+ sb.append(String.format("%13.3f", (double)(estimator.estimateK(k, n, p)*n) / k));
}
- System.out.println(sb.toString());
+ sb.append("\n");
}
+ return sb.toString();
}
}