我正在做一些文本处理,包括将一些字符转换为字符串。输入是Character
的长序列,输出是根据一定规则从Character
序列创建的一系列字符串。
说:
let input = "The quick brown fox jumps over a lazy dog."
我想知道下面哪一个更有效率:
let buffer = NSMutableString(capacity: MAX_SIZE)
var result = [String]()
for c in input {
buffer.append(String(c))
if (isComplete(buffer)) {
result.append(String(buffer))
buffer.deleteCharacters(in: NSRange(location: 0, length: buffer.length))
}
}
vs:
var buffer = [Character]()
var result = [String]()
for c in input {
buffer.append(c)
if (isComplete(buffer)) {
result.append(String(buffer))
buffer.removeAll()
}
}
在我看来,第二种方法更好,因为它不必将每个字符转换为String
以存储在NSMutableString
中,但因为我们知道最大可能的缓冲区大小,第一种方法指定了可变字符串的capacity
,其中可能在内存管理方面更好。内存重新分配时,添加更多的字符超出分配的内存空间为缓冲区?
谢谢!
我们必须理解NSMutableString提供了一个更受控制的包装器来操作字符。可以使用多个字符串
[Character]就像传统的数组一样。更多的手工工作和数组的所有限制。