Github user tillrohrmann commented on a diff in the pull request:

    https://github.com/apache/flink/pull/2112#discussion_r67866757
  
    --- Diff: 
flink-core/src/main/java/org/apache/flink/metrics/HistogramStatistics.java ---
    @@ -0,0 +1,135 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package org.apache.flink.metrics;
    +
    +import org.apache.flink.annotation.PublicEvolving;
    +
    +/**
    + * Histogram statistics represent the current snapshot of elements 
recorded in the histogram.
    + *
    + * The histogram statistics allow to calculate values for quantiles, the 
mean, the standard
    + * deviation, the minimum and the maximum.
    + */
    +@PublicEvolving
    +public abstract class HistogramStatistics {
    +
    +   /**
    +    * Returns the value for the given quantile based on the represented 
histogram statistics.
    +    *
    +    * @param quantile Quantile to calculate the value for
    +    * @return Value for the given quantile
    +    */
    +   public abstract double getValue(double quantile);
    +
    +   /**
    +    * Returns the elements of the statistics' sample
    +    *
    +    * @return Elements of the statistics' sample
    +    */
    +   public abstract long[] getValues();
    +
    +   /**
    +    * Returns the size of the statistics' sample
    +    *
    +    * @return Size of the statistics' sample
    +    */
    +   public abstract int size();
    +
    +   /**
    +    * Returns the mean of the histogram values.
    +    *
    +    * @return Mean of the histogram values
    +    */
    +   public abstract double getMean();
    +
    +   /**
    +    * Returns the standard deviation of the distribution reflected by the 
histogram statistics.
    +    *
    +    * @return Standard deviation of histogram distribution
    +    */
    +   public abstract double getStdDev();
    +
    +   /**
    +    * Returns the maximum value of the histogram.
    +    *
    +    * @return Maximum value of the histogram
    +    */
    +   public abstract long getMax();
    +
    +   /**
    +    * Returns the minimum value of the histogram.
    +    *
    +    * @return Minimum value of the histogram
    +    */
    +   public abstract long getMin();
    +
    +   /**
    +    * Returns the 50th percentile.
    +    *
    +    * @return 50th percentile
    +    */
    +   public double getMedian() {
    +           return getValue(0.5);
    +   }
    +
    +   /**
    +    * Returns the 75th percentile.
    +    *
    +    * @return 75th percentile
    +    */
    +   public double get75thPercentile() {
    +           return getValue(0.75);
    +   }
    +
    +   /**
    +    * Returns the 95th percentile.
    +    *
    +    * @return 95th percentile
    +    */
    +   public double get95thPercentile() {
    +           return getValue(0.95);
    +   }
    +
    +   /**
    +    * Returns the 98th percentile.
    +    *
    +    * @return 98th percentile
    +    */
    +   public double get98thPercentile() {
    +           return getValue(0.98);
    +   }
    +
    +   /**
    +    * Returns the 99th percentile.
    +    *
    +    * @return 99th percentile
    +    */
    +   public double get99thPercentile() {
    --- End diff --
    
    We don't need them strictly. However, these quantiles are usually the 
quantiles people are most interested in. Therefore, I would keep them as 
convenience functions for the user. Since they are implemented in the abstract 
class, they don't inflict higher implementation costs.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to