/// <summary> /// Test that QuantileEstimator can handle billions of items. /// </summary> //[TestMethod, TestCategory("Performance")] internal void QuantileEstimatorBillionsTest() { long n = 100000; double maximumError = 1e-2; QuantileEstimator est = new QuantileEstimator(maximumError); for (int i = 0; i < n; i++) { if (i % 100 == 0) { Console.WriteLine(i); } for (int j = 0; j < n; j++) { est.Add(i + j); } } long expectedCount = n * n; ulong actualCount = est.GetCount(); Console.WriteLine($"count = {actualCount} should be {expectedCount}"); Assert.Equal(expectedCount, actualCount, maximumError * expectedCount); double expectedMedian = n - 2; double actualMedian = est.GetQuantile(0.5); Console.WriteLine($"median = {actualMedian} should be {expectedMedian}"); Assert.Equal(expectedMedian, actualMedian, maximumError * expectedMedian); }