使用EventSource时,我应该记录两个事件,还是计算持续时间并仅记录一个?

时间:2014-07-31 19:03:28

标签: .net performance tracing etw-eventsource

假设我有一些方法需要跟踪性能信息。使用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;漂亮"

哪种方法首选? "最佳实践"说什么?

1 个答案:

答案 0 :(得分:3)

始终记录2个事件!将操作码开始停止操作码添加到第一个方法,以查看哪个操作是哪个操作。