在 C# 中多次运行 exe 命令的最快方法是什么?

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我的代码中并运行它是否更快?多次运行可执行文件(比如说在循环中)的最快方法是什么?

Dav*_*ish 5

一次运行它们可能会迫使它们竞争资源,例如 - 耗尽所有系统内存,导致对 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)