func recordOptimizedTimeToFirstDraw()

in Sources/apm-agent-ios/Instrumentation/AppMetrics/AppMetrics.swift [127:158]


  func recordOptimizedTimeToFirstDraw(metric: MXMetricPayload) {
    if #available(iOS 15.2, *) {
      if let optimizedTimeToFirstDraw = metric.applicationLaunchMetrics?
        .histogrammedOptimizedTimeToFirstDraw
        .bucketEnumerator {
        let rawHistogram = meter.createRawDoubleHistogram(name: ElasticMetrics.appLaunchTime.rawValue)
        var bounds = [Double]()
        var counts = [Int]()
        var sum = 0.0
        var count = 0
        // swiftlint:disable:next force_cast
        for bucket in optimizedTimeToFirstDraw.allObjects as! [MXHistogramBucket] {
          bounds.append(bucket.bucketStart.value)
          bounds.append(bucket.bucketEnd.value)
          counts.append(0)
          counts.append(bucket.bucketCount)
          let avg = (bucket.bucketStart.value + bucket.bucketEnd.value) / 2
          sum += avg * Double(bucket.bucketCount)
          count += bucket.bucketCount
        }
        counts.append(0)

        rawHistogram.record(explicitBoundaries: bounds,
                            counts: counts,
                            startDate: metric.timeStampBegin,
                            endDate: metric.timeStampEnd, count: count,
                            sum: sum,
                            labels: [LaunchTimeValues.key.rawValue: LaunchTimeValues.optimizedFirstDraw.rawValue])
      }

    }
  }