假设我有一些方法需要跟踪性能信息。使用System.Diagnostics.Tracing.EventSource
,我可以看到两种合乎逻辑的方法;首先,可以写两个事件,一个在开始时,一个在结尾,然后事件的消费者可以计算持续时间:
MySource.Log.OperationStart();
RunMyOperation();
MySource.Log.OperatingFinish();
或者,我可以自己计算持续时间,只写一个事件:
var sw = System.Diagnostics.Stopwatch.StartNew();
RunMyOperation();
sw.Stop();
MySource.Log.OperationFinish(sw.ElapsedTicks);
第二种方法的优点是不涉及数学;缺点是我必须创建秒表,操纵它,并写出数据,即使没有人在听。它也是一个额外的代码行,并且它不是主观上的#34;漂亮"
哪种方法首选? "最佳实践"说什么?
答案 0 :(得分:3)
始终记录2个事件!将操作码开始和停止操作码添加到第一个方法,以查看哪个操作是哪个操作。