2015-10-23 59 views
2

我在Xcode 7.1中创建了一个Swift游乐场,其代码如下,其评估速度非常慢(通常几分钟)。这是为什么发生?由于它使游乐场基本上无法使用,我可以做任何事情来改善它的执行时间吗?Swift playground with dictionary too slow

let sets = [ 
    "TEMPERATURE":[ 
     (value:37.0, attributes:["A":0.0, "B":0.2]), 
     (value:37.5, attributes:["A":0.0, "B":1.0]), 
     (value:38.0, attributes:["A":0.2, "B":0.5]), 
     (value:38.5, attributes:["A":0.5, "B":0.2]), 
     (value:39.0, attributes:["A":0.8, "B":0.0]), 
     (value:39.5, attributes:["A":1.0, "B":0.0]), 
     (value:40.0, attributes:["A":1.0, "B":0.0]), 
    ], 
    "VARIATION":[ 
     (value:0.0, attributes:["A":0.0, "B":1.0]), 
     (value:2.0, attributes:["A":0.2, "B":0.8]), 
     (value:5.0, attributes:["A":0.5, "B":0.5]), 
     (value:8.0, attributes:["A":0.8, "B":0.2]), 
     (value:10.0, attributes:["A":1.0, "B":0.0]), 
    ] 
] 

回答

3

这里的问题是,Swift编译器在推导类型sets时非常缓慢。如果将类型明确化,Swift编译器将不必花费任何时间推断它。试试这个:

let sets: [String:[(value: Double, attributes:[String:Double])]] = [ 
    "TEMPERATURE":[ 
     (value:37.0, attributes:["A":0.0, "B":0.2]), 
     (value:37.5, attributes:["A":0.0, "B":1.0]), 
     (value:38.0, attributes:["A":0.2, "B":0.5]), 
     (value:38.5, attributes:["A":0.5, "B":0.2]), 
     (value:39.0, attributes:["A":0.8, "B":0.0]), 
     (value:39.5, attributes:["A":1.0, "B":0.0]), 
     (value:40.0, attributes:["A":1.0, "B":0.0]), 
    ], 
    "VARIATION":[ 
     (value:0.0, attributes:["A":0.0, "B":1.0]), 
     (value:2.0, attributes:["A":0.2, "B":0.8]), 
     (value:5.0, attributes:["A":0.5, "B":0.5]), 
     (value:8.0, attributes:["A":0.8, "B":0.2]), 
     (value:10.0, attributes:["A":1.0, "B":0.0]), 
    ] 
] 
0

尝试后sets的初始化追加"VARIATION"。如果这仍然很慢,请继续缩小以将较小和较小的位添加到较大的字典中。我知道这很乏味,但不幸的是,这可能是Xcode和大量数据的常见错误。

+0

感谢您的回应!这也改善了执行时间,但通过将其类型明确地设置为rob描述,初始化我的游乐场花费的时间更少。 – yannis