Skip to content

Instantly share code, notes, and snippets.

@ycui1
Created January 14, 2020 06:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ycui1/0cdd666d11556530c238ee2176ffe604 to your computer and use it in GitHub Desktop.
Save ycui1/0cdd666d11556530c238ee2176ffe604 to your computer and use it in GitHub Desktop.
import UIKit
var records = [(String, Double, Double)]()
func compareOperations(name: String, repeats: Int, operations: [()->()]) {
var record = (name, 0.0, 0.0)
for (index, opertion) in operations.enumerated() {
let startTime = CFAbsoluteTimeGetCurrent()
for _ in 1...repeats {
opertion()
}
let timeInterval = (CFAbsoluteTimeGetCurrent() - startTime)*1000
if index == 0 {
record.1 = timeInterval
} else {
record.2 = timeInterval
}
}
records.append(record)
}
let number = 1
let array0 = Array(repeating: number, count: 0)
let array1 = Array(repeating: number, count: 1)
let array2 = Array(repeating: number, count: 10)
let array3 = Array(repeating: number, count: 100)
let array4 = Array(repeating: number, count: 1000)
let array5 = Array(repeating: number, count: 10000)
let array6 = Array(repeating: number, count: 100000)
let array7 = Array(repeating: number, count: 1000000)
let array8 = Array(repeating: number, count: 10000000)
let text = "Hello, World!"
let arrayi0 = Array(repeating: text, count: 0)
let arrayi1 = Array(repeating: text, count: 1)
let arrayi2 = Array(repeating: text, count: 10)
let arrayi3 = Array(repeating: text, count: 100)
let arrayi4 = Array(repeating: text, count: 1000)
let arrayi5 = Array(repeating: text, count: 10000)
let arrayi6 = Array(repeating: text, count: 100000)
let arrayi7 = Array(repeating: text, count: 1000000)
let arrayi8 = Array(repeating: text, count: 10000000)
let dictionary: Dictionary<String, Any> = ["name": "John", "class": "Smith", "age": 14]
let arrayd0 = Array(repeating: dictionary, count: 0)
let arrayd1 = Array(repeating: dictionary, count: 1)
let arrayd2 = Array(repeating: dictionary, count: 10)
let arrayd3 = Array(repeating: dictionary, count: 100)
let arrayd4 = Array(repeating: dictionary, count: 1000)
let arrayd5 = Array(repeating: dictionary, count: 10000)
let arrayd6 = Array(repeating: dictionary, count: 100000)
let arrayd7 = Array(repeating: dictionary, count: 1000000)
let arrayd8 = Array(repeating: dictionary, count: 10000000)
func generateOperations(array: [Any]) -> [()->()] {
var operations = [()->()]()
operations.append {
if array.count == 0 {
}
}
operations.append {
if array.isEmpty {
}
}
return operations
}
let repeats = 100000
compareOperations(name: "Int Array Elements 0", repeats: repeats, operations: generateOperations(array: array0))
compareOperations(name: "Int Array Elements 1", repeats: repeats, operations: generateOperations(array: array1))
compareOperations(name: "Int Array Elements 10", repeats: repeats, operations: generateOperations(array: array2))
compareOperations(name: "Int Array Elements 100", repeats: repeats, operations: generateOperations(array: array3))
compareOperations(name: "Int Array Elements 1000", repeats: repeats, operations: generateOperations(array: array4))
compareOperations(name: "Int Array Elements 10000", repeats: repeats, operations: generateOperations(array: array5))
compareOperations(name: "Int Array Elements 100000", repeats: repeats, operations: generateOperations(array: array6))
compareOperations(name: "Int Array Elements 1000000", repeats: repeats, operations: generateOperations(array: array7))
compareOperations(name: "Int Array Elements 10000000", repeats: repeats, operations: generateOperations(array: array8))
compareOperations(name: "String Array Elements 0", repeats: repeats, operations: generateOperations(array: arrayi0))
compareOperations(name: "String Array Elements 1", repeats: repeats, operations: generateOperations(array: arrayi1))
compareOperations(name: "String Array Elements 10", repeats: repeats, operations: generateOperations(array: arrayi2))
compareOperations(name: "String Array Elements 100", repeats: repeats, operations: generateOperations(array: arrayi3))
compareOperations(name: "String Array Elements 1000", repeats: repeats, operations: generateOperations(array: arrayi4))
compareOperations(name: "String Array Elements 10000", repeats: repeats, operations: generateOperations(array: arrayi5))
compareOperations(name: "String Array Elements 100000", repeats: repeats, operations: generateOperations(array: arrayi6))
compareOperations(name: "String Array Elements 1000000", repeats: repeats, operations: generateOperations(array: arrayi7))
compareOperations(name: "String Array Elements 10000000", repeats: repeats, operations: generateOperations(array: arrayi8))
compareOperations(name: "Dict Array Elements 0", repeats: repeats, operations: generateOperations(array: arrayd0))
compareOperations(name: "Dict Array Elements 1", repeats: repeats, operations: generateOperations(array: arrayd1))
compareOperations(name: "Dict Array Elements 10", repeats: repeats, operations: generateOperations(array: arrayd2))
compareOperations(name: "Dict Array Elements 100", repeats: repeats, operations: generateOperations(array: arrayd3))
compareOperations(name: "Dict Array Elements 1000", repeats: repeats, operations: generateOperations(array: arrayd4))
compareOperations(name: "Dict Array Elements 10000", repeats: repeats, operations: generateOperations(array: arrayd5))
compareOperations(name: "Dict Array Elements 100000", repeats: repeats, operations: generateOperations(array: arrayd6))
compareOperations(name: "Dict Array Elements 1000000", repeats: repeats, operations: generateOperations(array: arrayd7))
compareOperations(name: "Dict Array Elements 10000000", repeats: repeats, operations: generateOperations(array: arrayd8))
print(records)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment