我的代码(用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(); });

09-11 19:26
查看更多