运行 Fake 并行任务序列
Run task sequence in parallel in Fake
想使用 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"])
)
有没有办法运行并行序列迭代?
最简单的选择是:
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"])
)
想使用 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"])
)
有没有办法运行并行序列迭代?
最简单的选择是:
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"])
)