private static void WriteDistributed(IDistributed x, string key, HttpContext context)
        {
            var percentiles = x.Percentiles(0.5, 0.75, 0.95, 0.98, 0.99, 0.999);
            var max         = $"{key}.max;dur={x.Max}";
            var min         = $"{key}.min;dur={x.Min}";
            var mean        = $"{key}.mean;dur={x.Mean}";
            var stdDev      = $"{key}.stdDev;dur={x.StdDev}";
            var median      = $"{key}.median;dur={percentiles[0]}";

            var desc = x is TimerMetric timer ? $" <= {timer.DurationUnit.Abbreviate()}\"" : string.Empty;

            var p75  = $"{key}.p75;dur={percentiles[1]};desc=\"75%%{desc}\"";
            var p95  = $"{key}.p95;dur={percentiles[2]};desc=\"95%%{desc}\"";
            var p98  = $"{key}.p98;dur={percentiles[3]};desc=\"98%%{desc}\"";
            var p99  = $"{key}.p99;dur={percentiles[4]};desc=\"99%%{desc}\"";
            var p999 = $"{key}.p999;dur={percentiles[5]};desc=\"99.99%%{desc}\"";

            AddServerTimingEntry(context, max);
            AddServerTimingEntry(context, min);
            AddServerTimingEntry(context, mean);
            AddServerTimingEntry(context, stdDev);
            AddServerTimingEntry(context, median);

            AddServerTimingEntry(context, p75);
            AddServerTimingEntry(context, p95);
            AddServerTimingEntry(context, p98);
            AddServerTimingEntry(context, p99);
            AddServerTimingEntry(context, p999);
        }
Exemple #2
0
        private static void WriteDistributed(TextWriter writer, IDistributed distribution)
        {
            var percentiles = distribution.Percentiles(0.5, 0.75, 0.95, 0.98, 0.99, 0.999);

            writer.Write("               min = %{0:2}\n", distribution.Min);
            writer.Write("               max = %{0:2}\n", distribution.Max);
            writer.Write("              mean = %{0:2}\n", distribution.Mean);
            writer.Write("            stddev = %{0:2}\n", distribution.StdDev);
            writer.Write("            median = %{0:2}\n", percentiles[0]);
            writer.Write("              75%% <= %{0:2}\n", percentiles[1]);
            writer.Write("              95%% <= %{0:2}\n", percentiles[2]);
            writer.Write("              98%% <= %{0:2}\n", percentiles[3]);
            writer.Write("              99%% <= %{0:2}\n", percentiles[4]);
            writer.Write("            99.9%% <= %{0:2}\n", percentiles[5]);
        }
        /// <summary>
        ///     是否包含弱检索式
        /// </summary>
        /// <param name="filter">分期过滤器</param>
        /// <returns>若包含则为<c>true</c>,否则为<c>false</c></returns>
        public static bool IsDangerous(this IDistributed filter)
        {
            if (filter.ID.HasValue)
            {
                return(false);
            }
            if (filter.Name != null)
            {
                return(false);
            }
            if (!string.IsNullOrEmpty(filter.Remark))
            {
                return(false);
            }

            return(true);
        }
Exemple #4
0
    /// <summary>
    ///     获取分期的剩余
    /// </summary>
    /// <param name="dist">分期</param>
    /// <param name="dt">日期,若为<c>null</c>则返回总额</param>
    /// <returns>指定日期的总额,若早于日期则为<c>null</c></returns>
    public static double?GetBookValueOn(IDistributed dist, DateTime?dt)
    {
        if (!dt.HasValue ||
            dist.TheSchedule == null)
        {
            return(dist.Value);
        }

        var last = dist.TheSchedule.LastOrDefault(item => DateHelper.CompareDate(item.Date, dt) <= 0);

        if (last != null)
        {
            return(last.Value);
        }
        if (DateHelper.CompareDate(dist.Date, dt) <= 0)
        {
            return(dist.Value);
        }

        return(null);
    }
Exemple #5
0
        private static void AppendDistribution(StringBuilder sb, IDistributed distribution)
        {
            sb.Append("\"count\":").Append(distribution.Count)
            .Append(",\"max\":").Append(distribution.Max)
            .Append(",\"min\":").Append(distribution.Min)
            .Append(",\"mean\":").Append(distribution.Mean)
            .Append(",\"std_dev\":").Append(distribution.StdDev);
            sb.Append(",\"percentiles\":[");
            var values = distribution.Percentiles(percentiles);

            for (var i = 0; i < values.Length; i++)
            {
                sb.Append(values[i]);
                if (i < values.Length - 1)
                {
                    sb.Append(',');
                }
            }

            sb.Append("]");
        }
 public static double?GetBookValueOn(IDistributed dist, DateTime?dt)
 => DistributedAccountant.GetBookValueOn(dist, dt);
Exemple #7
0
 private static void AppendHistogram(StringBuilder sb, IDistributed histogram)
 {
     sb.Append('{');
     AppendDistribution(sb, histogram);
     sb.Append('}');
 }