假设我有一些方法要跟踪其性能信息。使用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);
第二种方法的好处是不涉及数学。缺点是我必须创建秒表,操作它,并写出数据,即使没有人在听。这也是一行额外的代码,主观上并没有那么“漂亮”。
哪个是首选方法?“最佳实践”怎么说?