程式對性能有要求。
單步除錯看看時間花在那些陳述句上了。不知道有沒有辦法可以直觀的知道那些陳述句/方法執行時花費了多少時間??
另外請教下。GC對程式執行時間有影響么?我現在的情況是
正常情況下一個簽名演算法下來大概5ms左右。但是連續測驗時發現。。有時候會突然飆升到幾十毫秒(同樣的輸入輸出)懷疑和GC有關。不知道怎么排查。。
uj5u.com熱心網友回復:
Visual Studio 2015 默認就能顯示時間。uj5u.com熱心網友回復:
請問哪里顯示?是我設定不對么?我是vs 2019 。是精確到 代碼行的么?還是精確到函式?uj5u.com熱心網友回復:
為啥你們第一件是就是學博客園的,“你離高手就差一個GC”,博客園典型的就是先忽悠瘸,然后賣拐。我想問的事情是,gc管的是什么?gc管記憶體,so,你說我覺著幾十毫秒慢了,你會去怪記憶體?是因為多分配記憶體了,所以cpu就慢了?
這是個什么邏輯來著,明顯是忽悠瘸,然后遞拐么
慢了,是因為cpu調度慢了,你說簽名演算法對吧,我們說這是需要計算的事情,歸cpu管,你慢是cpu算慢了,不是記憶體慢了,為啥cpu調度慢了,那是因為需要執行的東西多了。cpu采用時間片調度輪詢,當你加入的東西多了,他就只能這個干幾納秒,那個干個幾納秒。
所以你想快,不要管記憶體。請先看你有多少并發執行緒,而不是先找gc背鍋
uj5u.com熱心網友回復:
順帶說一句,博客園長期把鍋丟給gc,丟給記憶體,丟給string,如果說問題是記憶體溢位,記憶體爆掉,你去找gc可以其他事情,先找別的問題。
一大堆文章都是,我慢,微軟的錯,gc的錯。煞有介事的弄個dump,玩個windbg,貌似高手的分析來,分析去,結果說你看這個string 占了200M就是他,就是他
我們說這是結果,不是原因。真正的原因是,你慢,所以你的方法或執行緒沒有退出,堆積在那里,所以那個string還在用,所以gc還木有給你釋放,這是你慢造成的結果,不是因為string堆積造成了你慢。這個鍋gc和string都不該背
uj5u.com熱心網友回復:
至于記憶體對程式性能的影響,記憶體屬于io部分,大記憶體好處是允許把更多的資料放入記憶體,這樣比訪問磁盤io快1.當無法分配記憶體時(大多數情況到不是記憶體不夠,而是碎片過多,無法分配你需要的連續記憶體),會例外。這與慢無關,到會引發程式整體崩潰,造成服務失敗,引發其他服務的問題。
2.當物理記憶體不足 ,系統會把資料放入虛擬記憶體,這種情況下到可以說引發你慢,因為虛擬記憶體在磁盤上,磁盤IO是要比物理記憶體慢。但是系統做法是你物理記憶體不夠才會做這件事情,所以問題回到最初。何種情況下我們才會把物理記憶體用到必須使用虛擬記憶體的地步?還是因為算的慢啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/275321.html
標籤:C#
上一篇:這是哪兒出問題的呢?很嚴密啊?
