Пример #1
0
        /// <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);
        }