mono0926
1/15/2017 - 6:16 AM

string-performance.swift

import XCTest

class StringPerformanceTests2: XCTestCase {
    let chars = Array("あいうえお一二三四五1️⃣2️⃣3️⃣4️⃣5️⃣".characters)
    var input: String!

    override func setUp() {
        super.setUp()
        input = ((0..<100000).map { _ in String(chars[Int(arc4random_uniform(UInt32(chars.count))) % chars.count]) }).joined(separator: "")
    }

    func testPerformanceBytesInitializer() {
        let bytes = Array(input.utf8)

        self.measure {
            (0..<10).forEach { _ in
                _ = String(bytes: bytes, encoding: String.Encoding.utf8)
            }
        }
    }

    func testPerformanceCharactersArrayCast() {
        self.measure {
            (0..<10).forEach { _ in
                _ = Array(self.input.characters)
            }
        }
    }
}