blob: be59afebea569ed494cf52173555c5ce3580fdae [file] [log] [blame]
//===--- SevenBoom.swift --------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import TestsUtils
import Foundation
// 15% _swift_allocObject (String.bridgeToObjectiveC)
// 14% [NSError dealloc]
// 14% objc_allocWithZone
// 10% _swift_allocObject
// 11% _swift_release_dealloc
// 8% objc_release
// 7% objc_msgSend
// 5% _swift_release_
// 2% _swift_retain_
public var SevenBoom = BenchmarkInfo(
name: "SevenBoom",
runFunction: run_SevenBoom,
tags: [.runtime, .exceptions, .bridging, .cpubench]
)
@inline(never)
func filter_seven(_ input : Int) throws {
guard case 7 = input else {
throw NSError(domain: "AnDomain", code: 42, userInfo: nil)
}
}
@inline(never)
public func run_SevenBoom(_ N: Int) {
var c = 0
for i in 1...N*5000 {
do {
try filter_seven(i)
c += 1
}
catch _ {
}
}
CheckResults(c == 1)
}