class 는 reference type
struct는 value type

퍼포먼스적으로 봤을때
데이터 모델로써만 사용할때는 Struct가 유리
기능이 많다고하면 Class가 유리
만들어지거나 사용되는시간 Struct가 유리

struct TestStruct {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

class TestClass {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        var testStruct: [TestStruct] = []
        var testClass: [TestClass] = []

        let startTime = CFAbsoluteTimeGetCurrent()

        for _ in 0 ..< 1000000 {
            testStruct.append(TestStruct.init(name: "aa", age: 0))
        }

        let durationTime = CFAbsoluteTimeGetCurrent() - startTime

        let startTime2 = CFAbsoluteTimeGetCurrent()

        for _ in 0 ..< 1000000 {
            testClass.append(TestClass.init(name: "aa", age: 0))
        }

        let durationTime2 = CFAbsoluteTimeGetCurrent() - startTime2

        print("durationTime Struct: \(durationTime)")
        // durationTime Struct: 2.40787949849894
        print("durationTime Class: \(durationTime2)")
        // durationTime Class: 3.40787949849894


    }
}

'swift > 잡다함' 카테고리의 다른 글

[loveAlarm] 로컬라이징 default 언어 설정  (0) 2021.06.24
filePrivate, private 차이  (0) 2021.06.24
extension, protocol, Higher_Order_Func  (0) 2021.06.16
기본 클로저 사용  (0) 2021.06.07
ARC (weak, unowned)  (0) 2021.06.01

+ Recent posts