C#.NET exe(4.6.1)通过调用Console.Writeline的方法输出大量状态。这太明显了,它明显减慢了执行速度。首先想到的是添加一个bool而不是基于该值在被调用的方法中执行Writel。但是,如果exe执行4000次写入4000次检查,这似乎过多。
什么是短路输出的好方法?一种方法将Console.SetOut以某种方式变为空?
感谢。
答案 0 :(得分:0)
你可以使用代理来解决这个问题,虽然我确定检查bool可能比Console.WriteLine()
快得多。
向班级添加委托:
public delegate void Output(string message);
然后在应用程序开始时,您可以检查您的bool并指定运行哪种方法,具体取决于您是否要实际写入。
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。这就是说我不知道它实际上是否比每次检查一个bool更快,但可能更容易实现和维护。
答案 1 :(得分:0)
回答您的确切问题:
@Component({
selector: 'explode',
pipes: [ExplodePipe],
template: `
<div *ngFor="#item of data | explode ">{{item}}
</div>
`
})
export class ExplodeComponent {
@Input() data:String;
}
但System.Diagnostics TraceEvent调用可以更精细地控制您输出的内容。例如,在prod中,您只能输出“Error”消息,而在开发过程中,您可以输出详细日志。 https://msdn.microsoft.com/en-us/library/system.diagnostics.tracesource.traceevent(v=vs.110).aspx