1

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

第二种方法的好处是不涉及数学。缺点是我必须创建秒表,操作它,并写出数据,即使没有人在听。这也是一行额外的代码,主观上并没有那么“漂亮”。

哪个是首选方法?“最佳实践”怎么说?

4

1 回答 1

3

始终记录 2 个事件!将OpCode StartStop Opcode添加到第一个方法中,以查看哪个事件是哪个操作。

于 2014-08-01T04:06:36.883 回答