Я написал очень простой кусок кода в Swift:
protocol MultiplyByTwoProtocol {
func multiply() -> Int
}
class MultiplyByTwoClass: MultiplyByTwoProtocol {
private let n: Int
init(n: Int) { self.n = n }
func multiply() -> Int { return 2 * n }
}
class DynamicDispatchSwift {
private let items: [MultiplyByTwoProtocol]
init(n: Int) {
self.items = Array<Int>.generate(size: n).map(MultiplyByTwoClass.init)
}
func run() {
items.forEach { input in
_ = input.multiply()
}
}
}
(кстати generate
метод для Array
просто создает массив случайных Ints
)
Затем,Я запустил этот код в Instruments и получил следующие результаты:
Как видите, почти половина времени занимает запись под названием outlined init with copy of MultiplyByTwoProtocol
.Кто-нибудь знает, что это такое?
Спасибо за помощь.