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])
}
}
}