2016-04-26 17 views
1

FAKEを使用してビルドを高速化しますか?理論的には、(ターゲット内で)並列でビルドシーケンスを実行することができれば、それは速くなるはずです。フェイクで並行してタスクシーケンスを実行

let buildProject outputDir buildTargets projectName = 
    let setParams p = 
     { p with 
      Verbosity = Some(Quiet) 
      Targets = buildTargets 
      Properties = 
       [ "DevEnvDir", "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools" 
        "OutputPath", outputDir 
        "Optimize", "True" 
        "DebugSymbols", "True" 
        "Configuration", buildMode ] 
      } 
    build setParams projectName |> DoNothing 

Target "BuildLibs" (fun _ -> 
    !! "**/*.csproj" 
    -- "**/*.Tests.csproj" 
    //A way to run in parallel?? 
    |> Seq.iter (buildProject buildOutDir ["ReBuild"]) 
) 

シーケンス反復を並行して実行する方法はありますか?

答えて

1

最も簡単なオプションは、次のようになります。

Target "BuildLibs" (fun _ -> 
    !! "**/*.csproj" 
    -- "**/*.Tests.csproj" 
    |> Seq.ToArray 
    |> Array.Parallel.iter (buildProject buildOutDir ["ReBuild"]) 
) 

別の方法としては、 "F# Parallel Sequences" コンポーネントです。

#r "./PATHTOLIB/lib/net40/FSharp.Collections.ParallelSeq.dll" 
open FSharp.Collections.ParallelSeq 

Target "BuildLibs" (fun _ -> 
    !! "**/*.csproj" 
    -- "**/*.Tests.csproj" 
    |> PSeq.iter (buildProject buildOutDir ["ReBuild"]) 
) 
関連する問題