我的代码(用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();
这花费了很多时间,其中一些是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(); });