我正在启动一个进程,并通过stdin将指令xml文件写入目标进程。虽然只有2k的数据,但传输这么多数据却需要近半秒钟的时间,这对我来说似乎太长了。我测量的是子进程消耗数据所需的时间。
你有什么加快速度的建议吗?
父进程:
记录一下,我尝试过一种改变方法,先写出数据的长度,然后读取相同数量的字节,以避免等待流关闭,但这并没有对性能产生影响。
我正在生成许多小型工作进程,所以每个进程额外的0.5秒时间会让我疲惫不堪!
编辑:感谢所有评论,但我特别寻求任何改善标准输入性能的方法。我提到的0.5秒是在子进程代码周围测量得到的。
你有什么加快速度的建议吗?
父进程:
ProcessStartInfo psi = new ProcessStartInfo(path, args);
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
psi.RedirectStandardInput = true;
Process p = Process.Start(psi);
p.StandardInput.Write(stdin);
p.StandardInput.Close();
子进程:
Stream s = Console.OpenStandardInput();
StreamReader sr = new StreamReader(s);
return sr.ReadToEnd();
记录一下,我尝试过一种改变方法,先写出数据的长度,然后读取相同数量的字节,以避免等待流关闭,但这并没有对性能产生影响。
我正在生成许多小型工作进程,所以每个进程额外的0.5秒时间会让我疲惫不堪!
编辑:感谢所有评论,但我特别寻求任何改善标准输入性能的方法。我提到的0.5秒是在子进程代码周围测量得到的。
Stopwatch sw = new Stopwatch();
sw.Reset();
sw.Start();
string stdin = ReadStdIn();
sw.Stop();
Console.WriteLine("Elapsed time to read stdin: " + sw.ElapsedMilliseconds);
第二次编辑:在这种情况下,生成线程是不可能的。由于问题范围之外的原因,我需要每个工作都有自己的内存空间(限制为32位2GB)。