1
데이터 마스크 기능을 만들려고합니다.인덱스/데이터 마스킹에서 최상의 데이터 가져 오기/설정
사용하여 데이터 첨자 데이터로부터 배열을 생성
- 매우 느린
- , 변경 후
-
다시 변환 :
나는 두 가지 방법을 발견
- ~ 70 배 빠른
- 사용 2 배 더 많은 메모리
데이터 첨자가 너무 느린 이유는 무엇입니까? 메모리를 복제하지 않고 인덱스에서 uint8을 가져 오거나 설정하는 더 좋은 방법이 있습니까? 합니다 (Data
값을 첨자를 통해) 첫 번째 방법은 속도가 느린 이유
var data = Data(bytes: [UInt8](repeating: 123, count: 100_000_000))
let a = CFAbsoluteTimeGetCurrent()
// data masking
for i in 0..<data.count {
data[i] = data[i] &+ 1
}
let b = CFAbsoluteTimeGetCurrent()
// creating array
var bytes = data.withUnsafeBytes {
[UInt8](UnsafeBufferPointer(start: $0, count: data.count))
}
for i in 0..<bytes.count {
bytes[i] = bytes[i] &+ 1
}
data = Data(bytes: bytes)
let c = CFAbsoluteTimeGetCurrent()
print(b-a) // 8.8887130022049
print(c-b) // 0.12415999174118