我有以下代码:
public int Get5() {
// Not critical for presentation operation
LoggingService.Log();
// Retrieve data. The data calculation operation is lightweight operation.
return 5;
}
从代码中可以看出,该方法大部分时间都是用于记录。由于此操作并不重要,我希望尽快延迟并返回数据。
备注:
那么推荐的方法是什么?它是否值得呢?
答案 0 :(得分:0)
您可以使用非关键操作的方法,并使用async和await将其传递给工作线程。这将使主线程将操作委托给工作线程。一旦遇到await,操作就被委托给工作线程,并且工作线程将处理该方法的其余部分。
public async int Get5(){ //关键操作 等待 //任何非关键操作 }
答案 1 :(得分:0)
我认为最简单的方法是获取支持它的日志框架。例如。 NLog有一个async wrapper,这是一个很棒的日志框架。
记录通常发生得非常快,并且可能在某些实时应用程序中避免使用(例如交换源或某些硬件)。否则就像在普通的Web应用程序中一样,它根本不重要,你应该尝试优化系统的其他部分,然后才能达到如此低的水平。如果我们以Web请求/响应为例,那么通过网络发送数据将会非常慢,因此通过优化日志记录,您将获得可能低于1%的增长,这是不明显的。
P.S。在我的整个职业生涯中,我从来没有需要以这种方式优化伐木,所以我认为除非你真的需要它,否则不值得花时间。