0

AC# .NET exe (4.6.1) 通过调用执行 Console.Writeline 的方法输出大量状态。以至于它明显减慢了执行速度。首先想到的是在被调用的方法中根据值添加一个布尔值和/不执行 Writeline。但是,如果 exe 执行 4000 Writelines 即 4000 检查,这似乎过多。

什么是短路输出的好方法?以某种方式将 Console.SetOut 设置为 null 的方法?

谢谢。

4

2 回答 2

0

要回答您的确切问题:

Console.SetOut(TextWriter.Null);

但是 System.Diagnostics TraceEvent 调用让您可以更精细地控制输出内容。例如,在 prod 中您可以只输出“错误”消息,而在开发时您可以输出详细日志。https://msdn.microsoft.com/en-us/library/system.diagnostics.tracesource.traceevent(v=vs.110).aspx

于 2016-04-23T01:24:39.637 回答
0

你可以使用委托来解决这个问题,尽管我确信检查 bools 可能比Console.WriteLine().

向类添加委托:

public delegate void Output(string message);

然后在应用程序开始时,您可以检查您的布尔值并根据您是否要实际编写来分配要运行的方法。

bool logInformation = true;

if(logInformation)
{
    ProcessInformation((s) => { Console.WriteLine(s); });
}
else
{
    ProcessInformation((s) => { });
}

最后将委托添加到您的处理方法的方法签名中。

private void ProcessInformation(Output logger)
{
    // doing stuff, time to write
    logger("test");
}

您需要用 logger() 替换您的 Console.WriteLine 调用,但这将允许您运行事物而不必担心每次都检查布尔值。也就是说,我不知道它是否真的比每次检查一个 bool 更快,但可能更容易实现和维护。

于 2016-04-23T01:12:44.000 回答