forked from bestswifter/MySampleCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.swift
More file actions
47 lines (38 loc) · 1.82 KB
/
main.swift
File metadata and controls
47 lines (38 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//
// main.swift
// 利息
//
// Created by 张星宇 on 16/1/16.
// Copyright © 2016年 张星宇. All rights reserved.
//
import Foundation
func ktTimer<T>(description: String, @autoclosure task performTask: () -> T) -> Void {
let start = NSDate().timeIntervalSince1970
performTask()
let duration = NSDate().timeIntervalSince1970 - start
print("Mission '\(description)' completed in \(duration * 1000) ms")
}
func transformGenerater(duration duration: Float) -> Int -> Int {
return {
NSThread.sleepForTimeInterval(NSTimeInterval(duration))
return $0 * 2
}
}
/// 正确性测试
let test = UnitTest()
test.beginTest()
/// 性能测试
let littleArray: Array<Int> = [1,2,3,4,5,6,7,8,9,10] // 模拟数据量小的情况
var largeArray: Array<Int> = [] // 模拟数据量大的情况
for i in 0..<1000 {
largeArray.append(i)
}
ktTimer("1.少量数据,多线程map方法,耗时计算", task: littleArray.ktMap(transformGenerater(duration: 0.01)))
ktTimer("2.少量数据,普通map方法,耗时计算", task: littleArray.map(transformGenerater(duration: 0.01)))
ktTimer("3.少量数据,多线程map方法,不耗时计算", task: littleArray.ktMap(transformGenerater(duration: 0)))
ktTimer("4.少量数据,普通map方法,不耗时计算", task: littleArray.map(transformGenerater(duration: 0)))
print("")
ktTimer("5.大量数据,多线程map方法,耗时计算", task: largeArray.ktMap(transformGenerater(duration: 0.01)))
ktTimer("6.大量数据,普通map方法,耗时计算", task: largeArray.map(transformGenerater(duration: 0.01)))
ktTimer("7.大量数据,多线程map方法,不耗时计算", task: largeArray.ktMap(transformGenerater(duration: 0)))
ktTimer("8.大量数据,普通map方法,不耗时计算", task: largeArray.map(transformGenerater(duration: 0)))