Swift App需要大约6分钟才能构建

时间:2015-03-31 04:42:16

标签: ios arrays performance swift compiler-optimization

我有一个Swift应用程序,其数组大约有~100k字符串。该数组看起来像这样:

let strings: [String] = [
    "a",
    "as",
    // 99,998 elements later...
    "zebra"
]

在iOS模拟器中构建和运行应用程序需要将近6分钟。我已经将缓慢的构建时间与在项目中包含此数组隔离开来。一旦构建,后续启动非常快(直到我必须再次构建)。我该怎么做才能加快构建过程?

1 个答案:

答案 0 :(得分:0)

根据上面的评论,对我来说最好的解决方案是使用文本文件。数据库也可以工作,但在这种情况下它会增加不必要的复杂性。文本文件如下所示:

a
as
...
zebra

使用the StreamReader gist中的this SO post读取文件。这样做的代码如下:

if let aStreamReader = StreamReader(path: "/path/to/file") {
    for word in aStreamReader {
        // This is where I'm testing the following conditions:
        // 1) Does the word have a specific number of characters (e.g. 4 or 7)?
        // 2) Do all the characters in the word exist in a stored string?
        // e.g "lifeline", where "file" would match, but "lifelines" wouldn't.
        // This code is only here for context.
        if contains(characterCountsToMatch, countElements(word)) {
            if stringToMatch.containsCharsInString(word) {
                matchingWords.append(word)
            }
        }
    }
}

生成的matchingWords数组只包含必要的元素 - 在我的情况下约为600(不是~100k元素!)。该应用程序现在编译没有延迟。从文件中读取并将匹配附加到matchingWords数组大约需要5秒钟,这可以满足我的需要,但如果需要可以进一步优化。