Swift: быстрое построение строк

#string #performance #swift

#строка #Производительность #swift

Вопрос:

Я пытался написать какой-нибудь код Swift, чтобы сравнить производительность с моим кодом Obj-C.

У меня есть массив (буфер) UnicodeScalar, который я хочу преобразовать в объект String.

 let range = _peekBuffer[_peekBufferPos .. _peekBufferPos   length]
var retval = ""
for c in range {
    retval  = Character(c)
}
return retval
  

Производительность ужасна по целому ряду причин, но я не нашел лучшего способа построения строк в Swift. Я собираюсь попробовать перейти к NSString, а затем, вероятно, к CFString (что немного разочаровывает, поскольку я пытаюсь писать на чистом Swift), но мне было интересно, сталкивался ли кто-нибудь с какими-либо другими вариантами «быстрого» создания строк.

Комментарии:

1. используйте NSMutableString . вы не сможете написать никакого полезного кода с помощью чистого Swift.

2. Если вы пытаетесь выполнить какие-то конкретные действия, которые не выполняются должным образом, сообщите об ошибке .

Ответ №1:

Я не нашел способа преобразовать массив UnicodeScalars в строку, но вы можете преобразовать UnicodeScalars в массив символов, а затем массив символов в строку:

 var characters = [Character]()
for unicodeScalar in range {
  characters.append( Character(unicodeScalar) )
}
return String( characters )