C#使用Fody實(shí)現(xiàn)監(jiān)控方法執(zhí)行時(shí)間
寫(xiě)在前面
在做性能調(diào)優(yōu)的時(shí)候,經(jīng)常需要跟蹤具體方法的執(zhí)行時(shí)間;通過(guò)插入Stopwatch的方案對(duì)代碼的侵入性太高了,所以引入了 MethodTimer.Fody 類(lèi)庫(kù),采用編譯時(shí)注入的方式給方法動(dòng)態(tài)加上Stopwatch 跟蹤代碼,只需要在目標(biāo)方法上添加 [Time] 屬性標(biāo)簽,即可實(shí)現(xiàn)注入。
需要到NuGet安裝一下Fody 和 MethodTimer.Fody
PM> Install-Package Fody
PM> Install-Package MethodTimer.Fody
代碼實(shí)現(xiàn)
// 方法執(zhí)行時(shí)長(zhǎng)記錄器 public static class MethodTimeLogger { public static void Log(MethodBase methodBase, long milliseconds, string message) { Console.WriteLine($"方法:{methodBase.Name} 耗時(shí):{milliseconds}秒, 信息:{message}"); } } // 測(cè)試目標(biāo)類(lèi) public class MethodTracer { [Time("跟蹤測(cè)試")] public void TestMethod() { Console.WriteLine("TestMethod: 開(kāi)始執(zhí)行"); Thread.Sleep(123); } }
調(diào)用示例:
var methodTracer = new MethodTracer(); methodTracer.TestMethod();
執(zhí)行結(jié)果
注意事項(xiàng)
有個(gè)需要特別注意的事情,否則注入代碼無(wú)法生效,在項(xiàng)目中添加 FodyWeavers.xml 文件并將屬性設(shè)置為"始終復(fù)制"。
Xml文件內(nèi)容如下:
<?xml version="1.0" encoding="utf-8"?> <Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> <MethodTimer /> </Weavers>
直接黏貼以下內(nèi)容,vs會(huì)自動(dòng)生成xsd
<Weavers> <MethodTimer/> </Weavers>
到此這篇關(guān)于C#使用Fody實(shí)現(xiàn)監(jiān)控方法執(zhí)行時(shí)間的文章就介紹到這了,更多相關(guān)C#監(jiān)控方法執(zhí)行時(shí)間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)繪制浮雕圖片效果實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)繪制浮雕圖片效果實(shí)例,是C#程序設(shè)計(jì)中非常實(shí)用的一個(gè)功能,需要的朋友可以參考下2014-08-08C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實(shí)例
這篇文章主要介紹了C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-12-12DevExpress實(shí)現(xiàn)GridControl刪除所有行的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)GridControl刪除所有行的方法,對(duì)于C#初學(xué)者有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-08-08C#中使用Spire.XLS來(lái)操作Excel數(shù)據(jù)的實(shí)現(xiàn)
本文主要介紹了C#中使用Spire.XLS來(lái)操作Excel數(shù)據(jù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04通過(guò)C#實(shí)現(xiàn)在Excel單元格中寫(xiě)入文本、或數(shù)值
在商業(yè)、學(xué)術(shù)和日常生活中,Excel 的使用極為普遍,本文將詳細(xì)介紹如何使用免費(fèi).NET庫(kù)將數(shù)據(jù)寫(xiě)入到 Excel 中,包括文本、數(shù)值、數(shù)組、和DataTable數(shù)據(jù)的輸入,需要的朋友可以參考下2024-07-07C#創(chuàng)建數(shù)據(jù)庫(kù)及導(dǎo)入sql腳本的方法
這篇文章主要介紹了C#創(chuàng)建數(shù)據(jù)庫(kù)及導(dǎo)入sql腳本的方法,涉及C#針對(duì)數(shù)據(jù)庫(kù)的創(chuàng)建、連接、導(dǎo)入等相關(guān)操作技巧,需要的朋友可以參考下2015-12-12C# 導(dǎo)出Excel的6種簡(jiǎn)單方法實(shí)現(xiàn)
C# 導(dǎo)出 Excel 的6種簡(jiǎn)單方法:數(shù)據(jù)表導(dǎo)出到 Excel,對(duì)象集合導(dǎo)出到 Excel,數(shù)據(jù)庫(kù)導(dǎo)出到 Excel,微軟網(wǎng)格控件導(dǎo)出到 Excel,數(shù)組導(dǎo)出到 Excel,CSV 導(dǎo)出到 Excel,你都會(huì)了嗎?需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09