我的Xcode项目中有一个类似于以下的数据结构:
struct Group: {
let name: String
var items: [Thing]
}
struct Thing: {
let description: String
let variants: [Thing]?
}
var data: [Group] =
[Group(name: "Group 1",
items: [Thing(description: "Thing 1", variants: nil),
Thing(description: "Thing 2", variants: nil),
... ]),
Group(name: "Group 2",
items: [Thing(description: "AnotherThing 1", variants: [Thing(description: "Variant Thing1)",
Thing(description: "Variant Thing2)",
... ]),
Thing(description: "AnotherThing 2", variants: [Thing(description: "Variant Thing 101"),
Thing(description: "Variant Thing 102"),
... ]),
... ])]
总共有大约10个集团,其中包括大约3200个Thing;Thing’s在";项目";阵列和";变体";阵列。
Xcode编译这个文件需要3到5分钟。我该怎么做才能将此时间缩短到合理的时间?
旁白:除了编译速度慢之外,这种数据结构还让Xcode探查器变得疯狂。探查器通常会占用所有交换空间并使机器崩溃。
尝试将分配更改为
var data: [Group] = [Group(name: "Group 1", ....
根据我的经验,这些速度减慢主要是由于类型推断,明确指定类型有很大帮助。
如果这不起作用,请听从Joakim Danielson的建议。
我并没有像马特建议的那样做,但他的建议让我找到了一种做这件事的方法,不要太难看。
struct Thing: {
let description: String
var variants: [Thing]?
}
struct Group: {
let name: String
var items: [Thing]
}
let group1Things: [Thing] = [
Thing(description: "Thing 1", variants: nil),
Thing(description: "Thing 2", variants: nil),
... ]
let group1: Group = Group(name: "Group 1", items: group1Things)
let group2Things: [Thing] = [
Thing(description: "AnotherThing 1", variants: [Thing(description: "Variant Thing1)",
Thing(description: "Variant Thing2)",
... ]),
Thing(description: "AnotherThing 2", variants: [Thing(description: "Variant Thing 101"),
Thing(description: "Variant Thing 102"),
... ]
let group2: Group = Group(name: "Group 2", items: group2Things)
let data: [Group] = [group1, group2, ...]
这使得编译时间从3-5分钟减少到了30秒。我可以接受。我可能会通过打破";变体";阵列。