2017-01-13 5 views
1

私はコメントしても、シミュレータまたは通常のiPhoneにビルドするときに遅延はありません。 このメソッドを使用すると、実行に多くの時間がかかります。ここでインデックス処理ファイルXcodeスーパースロービルドと実行

が、私はこれが原因コードの非効率性に起因すると読み取ったコード

func createFirstRowView() { 
    let b = SKSpriteNode(imageNamed: "obj_bg_card1") 
    b.xScale = 0.8 
    b.yScale = 0.8 
    r = SKShapeNode(rectOf: CGSize(width: b.size.width*4, height: b.size.height)) 

    r.position = CGPoint(x: frame.midX, y: frame.midY) 
    //r.strokeColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0) 
    self.addChild(r) 

    for i in 0..<4{ 
     let bg = SKSpriteNode(imageNamed: "obj_bg_card1") 

     bg.xScale = 0.8 
     bg.yScale = 0.8 

     let lel = 0.5 + (Double(i)*1) 

     bg.position = CGPoint(x: -bg.size.width*2 + bg.size.width*CGFloat(lel), y: 0) 

     r.addChild(bg) 

    } 
    r.position = CGPoint(x: frame.midX, y: frame.midY*1.4) 

    let q = SKSpriteNode(imageNamed: "obj_bg_card1") 
    q.xScale = 0.8 
    q.yScale = 0.8 

    t = SKShapeNode(rectOf: CGSize(width: q.size.width*4, height: q.size.height)) 

    t.position = CGPoint(x: frame.midX, y: frame.midY) 
    //t.strokeColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0) 

    self.addChild(t) 

    for k in 0..<4{ 
     let bg = SKSpriteNode(imageNamed: "obj_bg_card1") 

     bg.xScale = 0.8 
     bg.yScale = 0.8 

     let lel = 0.5 + (Double(k)*1) 

     bg.position = CGPoint(x: -bg.size.width*2 + bg.size.width*CGFloat(lel), y: 0) 

     t.addChild(bg) 

    } 
    t.position = CGPoint(x: frame.midX, y: frame.midY*0.6) 
} 

だ...誰もが私のミスを見つけることができますか?

答えて

1

私の提案は、いくつかのものにこの方法を分離し、それぞれのcomilation時間を見て、コンパイラのdebug-time-function-bodiesオプションで、このターンのために間違った場所

をスポッティングすることです。あなたのXcodeプロジェクトでは、Build Settingsに行き、Other Swift Flagsを-Xfrontend -debug-time-function-bodiesに設定します。

ビルドレポート⌘-8が付いたナビゲータでは、最新のビルド(場合によってはその他のもの)が表示されます。

enter image description here

次に、あなたが構築されたターゲットのビルドログを右クリックして、詳細なビルドログを表示するために全ての転写を展開]を選択。

enter image description here

最後に、あなたはそれぞれがコンパイルプロセスにおけるファイルまたはステップを表す、緑色のボックスのシリーズを見るべきです。これらのボックス内のテキストには、適切に読み込まれるまでに時間がかかります(またはクリック)。関数のコンパイル時間を表示するようにビルドフラグを正しく設定した場合は、左側に一連のビルド時間が表示されます。 here

+0

から撮影

enter image description here

あなたの助けをありがとう!この機能を実行するには21秒かかる... jesus ...私は間違って何をすべきか? –

+0

@PedroCabacoこれは、この関数のコンパイルに21秒かかりますか?ああ、神様。答えで言及したものを別の関数に分けて、「コンパイル」機能を見つけて、それを使って試してみることができますか? – Sander

+0

@サンド:それに感謝します。私はまた、私の関数の1つのための16000ミリ秒のコンパイル時間を見つけた...しかし、そのような行の音を見つけた:0.04ms \t \t get {}。そして、私はどこかで、型キャストが不足している可能性があり、コンパイラを遅くする可能性があると読んでいます。あなたはこれを共有するための洞察を持っていますか? –

関連する問題