精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解F#版本的CodeTimer方法實(shí)現(xiàn)

開發(fā) 后端
在這里我們將介紹F#版本的CodeTimer方法實(shí)現(xiàn),這一方法在C#中已經(jīng)廣泛使用了,希望本文對大家有所幫助。

對于F#這個(gè)微軟的新丁,很多人并不熟悉。很多開發(fā)人員知道函數(shù)式編程方面Scala可以算一個(gè),但是不知道F#中CodeTimer妙用。本文借用作者的文章,希望能讓大家對F#有更深刻的了解。

#T#

CodeTimer很好用,自從在今年三月在.NET技術(shù)大會(huì)上看到Jeffrey Richter用類似的東西之后,我就自己寫了一個(gè)。不過,當(dāng)時(shí)是用C#寫的,現(xiàn)在我需要在F#里做相同的事情就不那么方便了。當(dāng)然,F(xiàn)#與.NET本是無縫集成,因此C#寫的CodeTimer也應(yīng)該可以被F#使用。不過,我平時(shí)在使用CodeTimer時(shí)并不是通過程序集引用,而是使用代碼復(fù)制的方式,因此如果有個(gè)F#版本那么應(yīng)該使用起來更加方便。

代碼如下:

  1. #light  
  2. module CodeTimer  
  3. open System  
  4. open System.Diagnostics  
  5. open System.Threading  
  6. open System.Runtime.InteropServices  
  7.  
  8. [<DllImport("kernel32.dll")>]  
  9. extern int QueryThreadCycleTime(IntPtr threadHandle, uint64* cycleTime)  
  10.  
  11. [<DllImport("kernel32.dll")>]  
  12. extern IntPtr GetCurrentThread();  
  13.  
  14. let private getCycleCount() =   
  15.     let mutable cycle = 0UL  
  16.     let threadHandle = GetCurrentThread()  
  17.     QueryThreadCycleTime(threadHandle, &&cycle) |> ignore  
  18.     cycle  
  19.  
  20. let time name iteration action =  
  21.  
  22.     if (String.IsNullOrEmpty(name)) then ignore 0 else 
  23.  
  24.     // keep current color  
  25.     let currentForeColor = Console.ForegroundColor  
  26.     Console.ForegroundColor <- ConsoleColor.Yellow  
  27.     printfn "%s" name  
  28.  
  29.     // keep current gc count  
  30.     GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);  
  31.     let gcCounts =  
  32.         [0 .. GC.MaxGeneration]  
  33.         |> List.map (fun i -> (i, GC.CollectionCount(i)))  
  34.         |> List.fold (fun acc i -> i :: acc) []  
  35.         |> List.rev  
  36.  
  37.     // keep cycle count and start watch  
  38.     let threadPtr = GetCurrentThread()  
  39.     let cycle = getCycleCount()  
  40.     let watch = Stopwatch.StartNew()  
  41.       
  42.     // run  
  43.     for i = 1 to iteration do action();  
  44.       
  45.     let cycleUsed = getCycleCount() - cycle  
  46.     watch.Stop()  
  47.  
  48.     // restore the color  
  49.     Console.ForegroundColor <- currentForeColor;  
  50.  
  51.     // print  
  52.     watch.ElapsedMilliseconds.ToString("N0") |> printfn "\tTime Elapsed:\t%sms" 
  53.     cycle.ToString("N0") |> printfn "\tCPU Cycles:\t%s" 
  54.     gcCounts |> List.iter (fun (i, c) ->   
  55.         printfn "\tGen%i:\t\t%i" i (GC.CollectionCount(i) - c))  
  56.  
  57.     printfn "" 
  58.  
  59. let initialize() =  
  60.     Process.GetCurrentProcess().PriorityClass <- ProcessPriorityClass.High  
  61.     Thread.CurrentThread.Priority <- ThreadPriority.Highest  
  62.     time "" 0 (fun() -> ignore 0) 

結(jié)果是:

  1. Wait  
  2.         Time Elapsed:   684ms  
  3.         CPU Cycles:     372,709,908  
  4.         Gen0:           0  
  5.         Gen1:           0  
  6.         Gen2:           0 

與C#版本的CodeTimer相比,第一版的F# CodeTimer少算了CPU使用周期的消耗——不是我不想,而是遇到了問題。我當(dāng)時(shí)這樣引入P/Invoke的簽名:

  1. open System.Runtime.InteropServices  
  2. [<DllImport("kernel32.dll")>]  
  3. extern int QueryThreadCycleTime(IntPtr threadHandle, uint32* cycleTime)  
  4. [<DllImport("kernel32.dll")>]  
  5. extern IntPtr GetCurrentThread(); 

F#在P/Invoke簽名中使用*來標(biāo)記out參數(shù),但是在自定義方法時(shí)使用的是byref,這點(diǎn)與C#不同,后者都是使用ref。這個(gè)引入看似沒有問題,而且普通調(diào)用也能得到正常結(jié)果:

  1. [<EntryPoint>]  
  2. let main args =  
  3.  
  4.     let mutable cycle = 0u 
  5.     let threadHandle = CodeTimer.GetCurrentThread()  
  6.     CodeTimer.QueryThreadCycleTime(threadHandle, &&cycle) |> ignore  
  7.  
  8.     Console.ReadLine() |> ignore  
  9.     0 

但是,一旦我把它加為CodeTimer的一個(gè)方法,如getCycleCount:

  1. let getCycleCount() =   
  2.     let mutable cycle = 0u  
  3.     let threadHandle = GetCurrentThread()  
  4.     QueryThreadCycleTime(threadHandle, &&cycle) |> ignore  
  5.     cycle 

這樣調(diào)用的時(shí)候就會(huì)拋出異常:

拋出異常

后經(jīng)alonesail同學(xué)指出,引入QueryThreadCycleTime的時(shí)候,第二個(gè)參數(shù)應(yīng)該是64位而不是32位無符號(hào)整數(shù)——我將PULONG64看作PULONG了。改成uint64便沒有問題了。

原文標(biāo)題:F#版本的CodeTimer(已支持CPU時(shí)鐘周期統(tǒng)計(jì))

鏈接:http://www.cnblogs.com/JeffreyZhao/archive/2009/11/13/fsharp-codetimer.html

責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2010-01-04 09:40:46

F#對象

2010-04-07 16:51:59

F#

2010-01-26 08:25:06

F#語法F#教程

2009-08-19 09:42:34

F#并行排序算法

2010-01-07 10:04:18

F#函數(shù)式編程

2011-08-01 16:24:04

XCode CodeTimer 測試

2010-03-16 09:09:04

F#

2010-01-15 08:33:13

F#F#類型推斷F#教程

2010-04-07 09:46:05

2010-03-26 19:22:08

F#代理

2010-08-16 16:12:58

F#

2011-06-09 09:52:41

F#

2009-08-13 17:39:48

F#數(shù)據(jù)類型Discriminat

2010-03-08 09:17:13

F#異步

2009-09-10 14:18:59

Functional F#

2012-11-06 10:01:35

ContinuatioF#

2009-12-04 09:16:44

Visual Stud

2009-12-14 09:04:10

F#運(yùn)算符

2012-03-12 12:34:02

JavaF#

2019-07-11 08:00:00

JavaScriptJulia編程語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

www.av在线.com| 日本猛少妇色xxxxx免费网站| av理论在线观看| 成人一区在线观看| 欧美一级大片在线观看| 免费看日本黄色片| 国产精品视频首页| 偷窥少妇高潮呻吟av久久免费 | 日韩综合av| 椎名由奈av一区二区三区| 99视频免费观看| 国产无套丰满白嫩对白| 亚洲天堂免费| 亚洲欧美日韩久久久久久| 中文字幕中文在线| 在线观看v片| 亚洲少妇30p| 欧美激情论坛| 亚洲第一色视频| 青青青伊人色综合久久| 国外色69视频在线观看| 精品在线观看一区| 要久久电视剧全集免费| 日韩欧美一区二区在线视频| 日韩 欧美 高清| 日本在线视频www鲁啊鲁| 国产精品美女久久久久久久| 久久99精品久久久久久三级| 99精品免费观看| 秋霞电影网一区二区| 久久免费高清视频| 久久人妻无码aⅴ毛片a片app| 蜜臀av免费一区二区三区| 欧美一级欧美三级| 91插插插插插插插插| 国产精品探花在线| 亚洲男人的天堂av| 亚洲一区美女| 成年人视频在线看| 久久久综合九色合综国产精品| 999热视频| 一级片在线免费观看视频| 久久亚洲图片| 欧美在线视频一二三| 日韩成人免费在线视频| 欧美区亚洲区| 欧美成人精品激情在线观看| 色婷婷粉嫩av| 欧美激情国产在线| 中文字幕久久亚洲| 日韩不卡av在线| 国产一区二区三区四区五区| 亚洲成人网av| 国产白袜脚足j棉袜在线观看| 精品视频国内| 日韩一区二区三区免费看| 国产精品久久久久久9999| 日韩毛片在线| 欧美性大战xxxxx久久久| 成人免费无码av| 成人日韩在线观看| 欧美色欧美亚洲高清在线视频| 亚洲人精品午夜射精日韩| 免费看电影在线| 亚洲第一在线综合网站| 国产av天堂无码一区二区三区| 91超碰在线| 精品国产乱码久久久久酒店| 18禁免费观看网站| 欧美极品videos大乳护士| 色哟哟日韩精品| 国产熟人av一二三区| 国产精品99| 91精品国产综合久久久久久漫画| 一级黄色高清视频| 在线日韩成人| 日韩av综合中文字幕| 国产jk精品白丝av在线观看| 成人久久久久| 欧美另类高清videos| 亚洲国产综合久久| 久久蜜桃资源一区二区老牛| 国产精品第一第二| 国产精品视频a| 国产成人一区在线| 久久综合伊人77777麻豆| xxxxx日韩| 亚洲私人黄色宅男| 三上悠亚久久精品| 亚洲电影有码| 精品国产1区2区3区| 国产精品无码网站| 日韩欧美大片| 欧美精品久久久久久久久久| 亚洲图片在线视频| 国内国产精品久久| 精品久久久久久一区| porn亚洲| 亚洲一区av在线| 国产a视频免费观看| 国产一区一区| 亚洲毛片在线观看.| 四虎永久免费在线| 亚洲一区成人| 2014亚洲精品| seseavlu视频在线| 精品成人国产在线观看男人呻吟| 浓精h攵女乱爱av| 国产成人精品亚洲线观看| 亚洲色图日韩av| 久久久久成人精品无码| 日日摸夜夜添夜夜添精品视频| 亚洲在线www| 久久久久久女乱国产| 一区二区日韩av| 美女网站视频黄色| 九九热hot精品视频在线播放 | 一区二区视频观看| 91综合网人人| 欧美制服第一页| 国产特级aaaaaa大片| 日本一区二区三区在线不卡| 国产二区视频在线| 国产精品国产亚洲精品| 亚洲人成网7777777国产| 久久精品第一页| 久久精品国产精品亚洲综合| 久久久久久久久久久久久9999| 成人午夜在线影视| 欧美性受xxxx黑人xyx性爽| 中文字幕精品视频在线| 亚洲天天综合| 国产日韩欧美中文在线播放| 免费一级在线观看| 无码av免费一区二区三区试看| 中文字幕第22页| 四虎成人av| 国产精品久久久久高潮| 蜜桃免费在线| 色综合视频在线观看| 中文字幕一区二区三区乱码不卡| 性欧美欧美巨大69| 国产日韩在线免费| 幼a在线观看| 日本韩国一区二区三区视频| 中出视频在线观看| 亚洲电影成人| 国产成人看片| 好久没做在线观看| 亚洲变态欧美另类捆绑| 久草精品视频在线观看| 成人av高清在线| 久久综合久久网| 91大神精品| 久久人人爽人人爽人人片av高请| 亚洲av无码乱码国产精品| 亚洲女子a中天字幕| 91热视频在线观看| 中文字幕一区二区三区久久网站 | 天堂中文字幕在线观看| 99久久99久久免费精品蜜臀| 波多野结衣综合网| 伊人久久大香线蕉| 国产精品成人av在线| av在线女优影院| 欧美日韩mp4| 青青草手机视频在线观看| 高清不卡一二三区| 精品久久一二三| 国产日韩欧美一区二区三区| 国产精品第二页| 黄色国产网站在线播放| 精品久久久久一区二区国产| 国产精品19乱码一区二区三区| 成人毛片老司机大片| 成人毛片视频网站| 成人免费a**址| 91社区国产高清| 欧美草逼视频| 亚洲精品在线视频| 亚洲午夜精品久久久| 尤物在线观看一区| 麻豆国产精品一区| 蜜桃av一区二区在线观看| 一区二区三区四区免费观看| 1769国产精品视频| 国产精品69久久| 九义人在线观看完整免费版电视剧| 日韩欧美成人一区| 免费视频网站在线观看入口| 国产精品久久久久久久久晋中| 一级黄色免费毛片| 国产乱码精品| 女女同性女同一区二区三区按摩| 国产suv精品一区二区四区视频| 日韩av手机在线观看| 黄色网在线看| 日韩黄色高清视频| av网站免费播放| 欧美性xxxxx极品娇小| 老司机成人免费视频| 99久久国产综合精品色伊| 亚洲视频第二页| 亚洲深夜影院| 强伦女教师2:伦理在线观看| 蜜桃一区av| 国产在线视频91| 亚洲欧洲高清| 欧美激情免费看| 伊人在线视频| 日韩久久精品电影| www.好吊色| 日本韩国视频一区二区| 日本一二三区视频| 亚洲视频一区二区免费在线观看| 人妻无码一区二区三区| 国产麻豆成人精品| 亚洲色图38p| 一本不卡影院| 蜜桃视频一区二区在线观看| 第一sis亚洲原创| 蜜桃成人在线| 成人直播在线观看| 91丝袜美腿美女视频网站| 在线日本欧美| 97高清免费视频| 在线中文字幕视频观看| 色偷偷av一区二区三区乱| 日韩电影网址| 亚洲国产另类久久精品| www.成人免费视频| 欧美电影一区二区| 一区二区三区麻豆| 色先锋资源久久综合| 日韩福利片在线观看| 亚洲自拍偷拍综合| 一区二区在线观看免费视频| 中文字幕一区视频| 国产三级黄色片| 国产亚洲自拍一区| 熟女少妇一区二区三区| 久久亚区不卡日本| 在线免费观看成年人视频| www.亚洲精品| 人妻av一区二区| 成人黄色网址在线观看| 国产av一区二区三区传媒| 国产电影一区二区三区| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 亚洲午夜av电影| 青青草视频在线观看| 精品五月天久久| 免费黄色片在线观看| 亚洲日韩欧美视频一区| 日本不卡视频一区二区| 亚洲欧美精品中文字幕在线| 欧美男男同志| 国产一区二区三区网站| 91视频在线观看| 最新中文字幕亚洲| 黄色在线免费看| 欧美超级乱淫片喷水| 欧美日韩经典丝袜| 992tv成人免费视频| 日本在线影院| 国产成人一区二区三区小说| 国产欧美在线观看免费| 91色在线视频| 草草视频在线一区二区| 精品一区二区三区视频日产| 一区二区小说| 亚洲福利av| 综合天天久久| 777777av| 欧美a一区二区| 天天干天天操天天玩| 国内精品免费在线观看| 毛茸茸free性熟hd| 国产亚洲女人久久久久毛片| 蜜桃视频最新网址| 亚洲午夜免费电影| 台湾佬中文在线| 欧美日韩国产首页| 欧美自拍偷拍第一页| 亚洲男人天堂2019| 麻豆传媒视频在线| 海角国产乱辈乱精品视频| 国产日韩电影| 91久久嫩草影院一区二区| 国产一区二区三区亚洲| 欧美亚洲丝袜| 亚洲精品久久久| 免费在线观看亚洲视频| 日本大胆欧美人术艺术动态| 亚洲精品一区二区18漫画| 91美女片黄在线| 99成人在线观看| 午夜成人在线视频| 国产精品久久免费| 日韩精品免费一线在线观看| 91视频在线观看| 69视频在线免费观看| 亚洲成人精品综合在线| 蜜桃久久精品乱码一区二区| 亚洲成人精选| aⅴ在线免费观看| 国产精品一区二区在线观看不卡 | 久久新电视剧免费观看| 久热这里有精品| 在线观看免费成人| 蜜桃91麻豆精品一二三区| 在线中文字幕日韩| sm久久捆绑调教精品一区| 91免费观看网站| av亚洲在线观看| 日韩av一二三四区| 国产成人在线视频网址| 男女全黄做爰文章| 色综合久久中文综合久久97| 丰满少妇高潮在线观看| www.久久色.com| 日本高清不卡一区二区三区视频| 97超碰人人看人人| 999成人网| 一道本视频在线观看| 91污在线观看| 日产精品久久久久| 日韩欧美一级精品久久| 国产黄色在线观看| 91精品国产综合久久男男| 亚洲成aⅴ人片久久青草影院| 国产一区二区三区小说| 国产精品亚洲а∨天堂免在线| 国产第一页精品| 91国模大尺度私拍在线视频 | 最近2019年好看中文字幕视频 | 91精品一区国产高清在线gif| caopor在线视频| 久久精品一区二区三区不卡| 欧美一二三区视频| 精品久久久久久久一区二区蜜臀| а天堂中文在线官网| 91香蕉亚洲精品| 99久久婷婷| 五月天av在线播放| 国产精品夫妻自拍| 97在线公开视频| 久久精品欧美视频| 国产一区二区| 国产欧美123| 成人亚洲一区二区一| 国产乡下妇女做爰视频| 精品国产凹凸成av人网站| av小说在线播放| 国产精品日韩一区二区| 91久久在线| 捆绑裸体绳奴bdsm亚洲| 红桃视频成人在线观看| 天天av综合网| 日本免费久久高清视频| 精品美女久久久| 极品粉嫩美女露脸啪啪| 亚洲日本一区二区三区| 性少妇videosexfreexxx片| 欧美极品少妇xxxxⅹ免费视频| 91蝌蚪精品视频| 日韩精品xxxx| 国产亚洲欧美中文| 夜夜骚av一区二区三区| 欧美久久精品午夜青青大伊人| 日韩激情欧美| 欧美 日韩 亚洲 一区| 26uuu欧美| 亚洲在线观看av| 九九热视频这里只有精品| 卡通动漫精品一区二区三区| 亚洲中文字幕无码中文字| 国产欧美日韩三区| a级片免费视频| 91成人在线观看国产| 成人av资源电影网站| 一本之道在线视频| 欧美日韩国产精品一区二区不卡中文| 久久电影中文字幕| 成人激情视频免费在线| 亚洲精选在线| 貂蝉被到爽流白浆在线观看| 欧美一级高清大全免费观看| 无遮挡在线观看| 在线视频福利一区| 99久久99久久免费精品蜜臀| 中文字幕福利视频| 欧美激情视频在线观看| 国产欧美一区二区三区精品观看| 一级黄色录像在线观看| 亚洲二区在线观看| 欧美猛烈性xbxbxbxb| 久久久婷婷一区二区三区不卡| 久久国产麻豆精品| 日本熟妇一区二区|