Created
January 14, 2020 06:11
-
-
Save ycui1/0cdd666d11556530c238ee2176ffe604 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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