A-S*_*ani 2 c# command-line exe process
我的代码(用 C# 编写)exe多次运行某个命令(平均 800 次)。
目前我在 C# 中运行exe命令:Process
var process1 = new Process()
{
StartInfo = new ProcessStartInfo()
{
FileName = "latex",
Arguments = String.Format("-quiet -output-directory=\"{0}\" \"{1}\"", equationDirectory, equationTEX),
WorkingDirectory = equationDirectory,
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true
}
};
process1.Start();
Run Code Online (Sandbox Code Playgroud)
这花费了很多时间,其中一些是 Windows 启动 shell 进程。
问题
我想知道将嵌入到exe我的代码中并运行它是否更快?多次运行可执行文件(比如说在循环中)的最快方法是什么?
一次运行它们可能会迫使它们竞争资源,例如 - 耗尽所有系统内存,导致对 HDD 进行分页。
也许使用如下所示的方法,并测试可以同时运行的数量,您会发现一个最佳点:
var processes = new List<Process>();
var process1 = new Process()
{
StartInfo = new ProcessStartInfo()
{
FileName = "latex",
Arguments = String.Format("-quiet -output-directory=\"{0}\" \"{1}\"", equationDirectory, equationTEX),
WorkingDirectory = equationDirectory,
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true
}
};
//Add all of your processes to a list before actually running them
processes.Add(process1);
//This will run 5 in parallel
Parallel.ForEach(processes, new ParallelOptions { MaxDegreeOfParallelism = 5 }, p => { p.WaitForExit(); });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2920 次 |
| 最近记录: |