mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Add some benchmarks for when the whole interpolated string is small, and when it is very large but every segment is pretty small.
296 lines
8.0 KiB
Swift
296 lines
8.0 KiB
Swift
//===--- main.swift -------------------------------------------*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// This is just a driver for performance overview tests.
|
|
|
|
import TestsUtils
|
|
import DriverUtils
|
|
import Ackermann
|
|
import AngryPhonebook
|
|
import AnyHashableWithAClass
|
|
import Array2D
|
|
import ArrayAppend
|
|
import ArrayInClass
|
|
import ArrayLiteral
|
|
import ArrayOfGenericPOD
|
|
import ArrayOfGenericRef
|
|
import ArrayOfPOD
|
|
import ArrayOfRef
|
|
import ArraySetElement
|
|
import ArraySubscript
|
|
import BinaryFloatingPointConversionFromBinaryInteger
|
|
import BitCount
|
|
import ByteSwap
|
|
import COWTree
|
|
import CString
|
|
import CSVParsing
|
|
import Calculator
|
|
import CaptureProp
|
|
import CharacterLiteralsLarge
|
|
import CharacterLiteralsSmall
|
|
import CharacterProperties
|
|
import Chars
|
|
import ClassArrayGetter
|
|
import Combos
|
|
import DeadArray
|
|
import DictOfArraysToArrayOfDicts
|
|
import DictTest
|
|
import DictTest2
|
|
import DictTest3
|
|
import DictTest4
|
|
import DictionaryBridge
|
|
import DictionaryGroup
|
|
import DictionaryLiteral
|
|
import DictionaryRemove
|
|
import DictionarySubscriptDefault
|
|
import DictionarySwap
|
|
import DoubleWidthDivision
|
|
import DropFirst
|
|
import DropLast
|
|
import DropWhile
|
|
import ErrorHandling
|
|
import Exclusivity
|
|
import ExistentialPerformance
|
|
import Fibonacci
|
|
import Hanoi
|
|
import Hash
|
|
import HashQuadratic
|
|
import Histogram
|
|
import Integrate
|
|
import IterateData
|
|
import Join
|
|
import LazyFilter
|
|
import LinkedList
|
|
import LuhnAlgoEager
|
|
import LuhnAlgoLazy
|
|
import MapReduce
|
|
import Memset
|
|
import MonteCarloE
|
|
import MonteCarloPi
|
|
import NibbleSort
|
|
import NSDictionaryCastToSwift
|
|
import NSError
|
|
import NSStringConversion
|
|
import NopDeinit
|
|
import ObjectAllocation
|
|
import ObjectiveCBridging
|
|
import ObjectiveCBridgingStubs
|
|
import ObjectiveCNoBridgingStubs
|
|
import ObserverClosure
|
|
import ObserverForwarderStruct
|
|
import ObserverPartiallyAppliedMethod
|
|
import ObserverUnappliedMethod
|
|
import OpenClose
|
|
import PartialApplyDynamicType
|
|
import Phonebook
|
|
import PointerArithmetics
|
|
import PolymorphicCalls
|
|
import PopFront
|
|
import PopFrontGeneric
|
|
import Prefix
|
|
import PrefixWhile
|
|
import Prims
|
|
import PrimsSplit
|
|
import ProtocolDispatch
|
|
import ProtocolDispatch2
|
|
import Queue
|
|
import RC4
|
|
import RGBHistogram
|
|
import RangeAssignment
|
|
import RangeIteration
|
|
import RangeReplaceableCollectionPlusDefault
|
|
import RecursiveOwnedParameter
|
|
import ReduceInto
|
|
import RemoveWhere
|
|
import ReversedCollections
|
|
import RomanNumbers
|
|
import SequenceAlgos
|
|
import SetTests
|
|
import SevenBoom
|
|
import Sim2DArray
|
|
import SortLargeExistentials
|
|
import SortLettersInPlace
|
|
import SortStrings
|
|
import StackPromo
|
|
import StaticArray
|
|
import StrComplexWalk
|
|
import StrToInt
|
|
import StringBuilder
|
|
import StringComparison
|
|
import StringEdits
|
|
import StringEnum
|
|
import StringInterpolation
|
|
import StringMatch
|
|
import StringRemoveDupes
|
|
import StringTests
|
|
import StringWalk
|
|
import Substring
|
|
import Suffix
|
|
import SuperChars
|
|
import TwoSum
|
|
import TypeFlood
|
|
import UTF8Decode
|
|
import Walsh
|
|
import WordCount
|
|
import XorLoop
|
|
|
|
@inline(__always)
|
|
private func registerBenchmark(_ bench: BenchmarkInfo) {
|
|
registeredBenchmarks.append(bench)
|
|
}
|
|
|
|
@inline(__always)
|
|
private func registerBenchmark<
|
|
S : Sequence
|
|
>(_ infos: S) where S.Element == BenchmarkInfo {
|
|
registeredBenchmarks.append(contentsOf: infos)
|
|
}
|
|
|
|
registerBenchmark(Ackermann)
|
|
registerBenchmark(AngryPhonebook)
|
|
registerBenchmark(AnyHashableWithAClass)
|
|
registerBenchmark(Array2D)
|
|
registerBenchmark(ArrayAppend)
|
|
registerBenchmark(ArrayInClass)
|
|
registerBenchmark(ArrayLiteral)
|
|
registerBenchmark(ArrayOfGenericPOD)
|
|
registerBenchmark(ArrayOfGenericRef)
|
|
registerBenchmark(ArrayOfPOD)
|
|
registerBenchmark(ArrayOfRef)
|
|
registerBenchmark(ArraySetElement)
|
|
registerBenchmark(ArraySubscript)
|
|
registerBenchmark(BinaryFloatingPointConversionFromBinaryInteger)
|
|
registerBenchmark(BitCount)
|
|
registerBenchmark(ByteSwap)
|
|
registerBenchmark(COWTree)
|
|
registerBenchmark(CString)
|
|
registerBenchmark(CSVParsing)
|
|
registerBenchmark(CSVParsingAlt)
|
|
registerBenchmark(CSVParsingAltIndices)
|
|
registerBenchmark(Calculator)
|
|
registerBenchmark(CaptureProp)
|
|
registerBenchmark(CharacterLiteralsLarge)
|
|
registerBenchmark(CharacterLiteralsSmall)
|
|
registerBenchmark(CharacterPropertiesFetch)
|
|
registerBenchmark(CharacterPropertiesStashed)
|
|
registerBenchmark(CharacterPropertiesStashedMemo)
|
|
registerBenchmark(CharacterPropertiesPrecomputed)
|
|
registerBenchmark(Chars)
|
|
registerBenchmark(Combos)
|
|
registerBenchmark(ClassArrayGetter)
|
|
registerBenchmark(DeadArray)
|
|
registerBenchmark(DictOfArraysToArrayOfDicts)
|
|
registerBenchmark(Dictionary)
|
|
registerBenchmark(Dictionary2)
|
|
registerBenchmark(Dictionary3)
|
|
registerBenchmark(Dictionary4)
|
|
registerBenchmark(DictionaryBridge)
|
|
registerBenchmark(DictionaryGroup)
|
|
registerBenchmark(DictionaryLiteral)
|
|
registerBenchmark(DictionaryRemove)
|
|
registerBenchmark(DictionarySubscriptDefault)
|
|
registerBenchmark(DictionarySwap)
|
|
registerBenchmark(DoubleWidthDivision)
|
|
registerBenchmark(DropFirst)
|
|
registerBenchmark(DropLast)
|
|
registerBenchmark(DropWhile)
|
|
registerBenchmark(ErrorHandling)
|
|
registerBenchmark(Exclusivity)
|
|
registerBenchmark(ExistentialPerformance)
|
|
registerBenchmark(Fibonacci)
|
|
registerBenchmark(Hanoi)
|
|
registerBenchmark(HashTest)
|
|
registerBenchmark(HashQuadratic)
|
|
registerBenchmark(Histogram)
|
|
registerBenchmark(IntegrateTest)
|
|
registerBenchmark(IterateData)
|
|
registerBenchmark(Join)
|
|
registerBenchmark(LazyFilter)
|
|
registerBenchmark(LinkedList)
|
|
registerBenchmark(LuhnAlgoEager)
|
|
registerBenchmark(LuhnAlgoLazy)
|
|
registerBenchmark(MapReduce)
|
|
registerBenchmark(Memset)
|
|
registerBenchmark(MonteCarloE)
|
|
registerBenchmark(MonteCarloPi)
|
|
registerBenchmark(NSDictionaryCastToSwift)
|
|
registerBenchmark(NSErrorTest)
|
|
registerBenchmark(NSStringConversion)
|
|
registerBenchmark(NibbleSort)
|
|
registerBenchmark(NopDeinit)
|
|
registerBenchmark(ObjectAllocation)
|
|
registerBenchmark(ObjectiveCBridging)
|
|
registerBenchmark(ObjectiveCBridgingStubs)
|
|
registerBenchmark(ObjectiveCNoBridgingStubs)
|
|
registerBenchmark(ObserverClosure)
|
|
registerBenchmark(ObserverForwarderStruct)
|
|
registerBenchmark(ObserverPartiallyAppliedMethod)
|
|
registerBenchmark(ObserverUnappliedMethod)
|
|
registerBenchmark(OpenClose)
|
|
registerBenchmark(PartialApplyDynamicType)
|
|
registerBenchmark(Phonebook)
|
|
registerBenchmark(PointerArithmetics)
|
|
registerBenchmark(PolymorphicCalls)
|
|
registerBenchmark(PopFront)
|
|
registerBenchmark(PopFrontArrayGeneric)
|
|
registerBenchmark(Prefix)
|
|
registerBenchmark(PrefixWhile)
|
|
registerBenchmark(Prims)
|
|
registerBenchmark(PrimsSplit)
|
|
registerBenchmark(ProtocolDispatch)
|
|
registerBenchmark(ProtocolDispatch2)
|
|
registerBenchmark(QueueGeneric)
|
|
registerBenchmark(QueueConcrete)
|
|
registerBenchmark(RC4Test)
|
|
registerBenchmark(RGBHistogram)
|
|
registerBenchmark(RangeAssignment)
|
|
registerBenchmark(RangeIteration)
|
|
registerBenchmark(RangeReplaceableCollectionPlusDefault)
|
|
registerBenchmark(RecursiveOwnedParameter)
|
|
registerBenchmark(ReduceInto)
|
|
registerBenchmark(RemoveWhere)
|
|
registerBenchmark(ReversedCollections)
|
|
registerBenchmark(RomanNumbers)
|
|
registerBenchmark(SequenceAlgos)
|
|
registerBenchmark(SetTests)
|
|
registerBenchmark(SevenBoom)
|
|
registerBenchmark(Sim2DArray)
|
|
registerBenchmark(SortLargeExistentials)
|
|
registerBenchmark(SortLettersInPlace)
|
|
registerBenchmark(SortStrings)
|
|
registerBenchmark(StackPromo)
|
|
registerBenchmark(StaticArrayTest)
|
|
registerBenchmark(StrComplexWalk)
|
|
registerBenchmark(StrToInt)
|
|
registerBenchmark(StringBuilder)
|
|
registerBenchmark(StringComparison)
|
|
registerBenchmark(StringEdits)
|
|
registerBenchmark(StringEnum)
|
|
registerBenchmark(StringInterpolation)
|
|
registerBenchmark(StringInterpolationSmall)
|
|
registerBenchmark(StringInterpolationManySmallSegments)
|
|
registerBenchmark(StringMatch)
|
|
registerBenchmark(StringRemoveDupes)
|
|
registerBenchmark(StringTests)
|
|
registerBenchmark(StringWalk)
|
|
registerBenchmark(SubstringTest)
|
|
registerBenchmark(Suffix)
|
|
registerBenchmark(SuperChars)
|
|
registerBenchmark(TwoSum)
|
|
registerBenchmark(TypeFlood)
|
|
registerBenchmark(UTF8Decode)
|
|
registerBenchmark(Walsh)
|
|
registerBenchmark(WordCount)
|
|
registerBenchmark(XorLoop)
|
|
|
|
main()
|