[swift-users] Optimal String conversion to/from UTF-8 w/o null-termination?

Quinn "The Eskimo!" eskimo1 at apple.com
Mon Nov 6 08:58:42 CST 2017


On 3 Nov 2017, at 19:42, Jens Alfke via swift-users <swift-users at swift.org> wrote:

> Any way to pass the bytes directly to String without an intermediate copy?

You can do this with `UnsafeBufferPointer`.  For example:

extension String {
    init?(bytes: UnsafePointer<UInt8>, count: Int) {
        let bp = UnsafeBufferPointer(start: bytes, count: count)
        self.init(bytes: bp, encoding: .utf8)
    }
}

I don’t know if this is faster.

There are lots of different ways to achieve your two goals and I wouldn’t even start optimising this without a realistic model of what your strings look like in practice, and a performance test based on that model.

Share and Enjoy
--
Quinn "The Eskimo!"                    <http://www.apple.com/developer/>
Apple Developer Relations, Developer Technical Support, Core OS/Hardware




More information about the swift-users mailing list