У меня длинная строка (иногда более 1000 символов), которую я хочу преобразовать в массив логических значений. И это нужно делать это много раз, очень быстро.
let input: String = "001"
let output: [Bool] = [false, false, true]
Моя наивная попытка заключалась в следующем:
input.characters.map { $0 == "1" }
Но это намного медленнее, чем хотелось бы. Мое профилирование показало мне, что map
- это то место, где происходит замедление, но я не уверен, насколько проще я могу это сделать.
Я чувствую, что это было бы беззаботно быстро без накладных расходов Swift/ObjC. В C я думаю, что это простой цикл for
, в котором байт памяти сравнивается с константой, но я не уверен, какие функции или синтаксис я должен смотреть.
Есть ли способ сделать это намного быстрее?
UPDATE:
Я также пробовал
output = []
for char in input.characters {
output.append(char == "1")
}
И это примерно на 15% быстрее. Я надеюсь на гораздо больше.