摘要:并發線程測試循環新建線程類,并在線程體內塞入單個的測試用例,以及全局的計數類。為了讓性能測試更充分,我編寫了不同的計算過程,并使用隨機函數隨機獲取并塞入線程執行。
是的,是鎖總會有損耗,因為使用了Interlocked鎖的緣故,肯定會對性能測試造成一定的干擾,那我們先來看看底噪是多少,開100個線程,寫個什么都不干的函數,開始run。
cpu跑滿了,火力全開,qps達到了1.1億, 哦哦哦,我想我可以忽略這個影響了,你說是吧。
這里記錄了qps、error、threads以及時間, 為了不再開啟線程和省事,甚至還增加了一個按照時間秒數打印輸出日志的功能。
一切就是這么簡單。
這是定義:
private volatile int Qps = 0;private volatile int Error = 0;private volatile int Threads = 0;private DateTime dtStart = DateTime.Now;private volatile int printSecond = 1;
我們提供個接口,增加qps計數public void AddQps(){ Interlocked.Increment(ref Qps); Print();}
到整數時間就打印
if(Seconds == Interlocked.Exchange(ref printSecond,Seconds+1)){ Console.WriteLine($"time={Seconds}, threads= {MyThreads}, qps = {MyQps}, error = {MyError}");}
增加錯誤,和線程數,類似增加qps接口。
提供訪問qps等的屬性:
public int Seconds => (int)((DateTime.Now - dtStart).TotalSeconds);public int MyQps => Qps / (Seconds==0 ? 1: Seconds);public int MyError => Error / (Seconds == 0 ? 1 : Seconds);public int MyThreads => Threads ;
在我們內部的測試用例內,我們需要調用計數類的增加qps等接口,這個計數類是全局的,各個線程共享計數類實例。
private void internalTest(){ var idx = random.Next(0, actions.Count); try { actions[idx].Invoke(); } catch (Exception ex) { calcValue.AddError(); } finally { calcValue.AddQps(); }}
循環新建線程類,并在線程體內塞入單個的測試用例,以及全局的計數類。在建立好所有的線程后,耗時不計入性能的計算都預熱好,然后一塊開啟線程,開始測試。
為了讓性能測試更充分,我編寫了不同的計算過程,并使用隨機函數隨機獲取并塞入線程執行。
當然一切搞定后,調用就非常簡單了。
var test = new ParallelTest(nThread);test.Start<UTest1>(TimeSpan.FromSeconds(nSpan));
當然.net core 開啟線程池限制, 避免性能問題。
ThreadPool.SetMinThreads(1000, 1000); ThreadPool.SetMaxThreads(1500, 1500);
嗯嗯,相比底噪,差距還是蠻大的,因此盡可以使用。
8月更新完畢,其實還是蠻困難的,寫到最后都不知道寫啥了,生成速度完全跟不上啊。
例行小結,理性看待!
結的是啥啊,結的是我想你點贊而不可得的寂寞。???
?都看到這了,還在乎點個贊嗎?
?都點贊了,還在乎一個收藏嗎?
?都收藏了,還在乎一個評論嗎?
?
以上筆者的經歷更像一張橫向的知識網,創建了一個交流平臺 914172719 ,群內有各種技術同行交流、學習資料、面試經驗等。其中用到jenkins、docker、moutebank、python編程等,還需要花更多的精力去深入學習,當每項技能都能掌握到一定深度,才能稱為一個完整的知識體系。
最后: 可以關注公眾號:傷心的辣條 ! 進去有許多資料共享!資料都是面試時面試官必問的知識點,也包括了很多測試行業常見知識,其中包括了有基礎知識、Linux必備、Shell、互聯網程序原理、Mysql數據庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續集成、測試架構開發測試框架、性能測試、安全測試等。
如果我的博客對你有幫助、如果你喜歡我的博客內容,請 “點贊” “評論” “收藏” 一鍵三連哦!
轉行面試,跳槽面試,軟件測試人員都必須知道的這幾種面試技巧!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/119391.html
摘要:函數式編程與面向對象編程編程的本質之劍目錄編程的本質讀到兩篇文章寫的不錯綜合摘錄一下復合是編程的本質函數式程序員在洞察問題方面會遵循一個奇特的路線。在面向對象編程中,類或接口的聲明就是表面。 函數式編程與面向對象編程[5]:編程的本質 之劍 2016.5.6 01:26:31 編程的本質 讀到兩篇文章,寫的不錯, 綜合摘錄一下 復合是編程的本質 函數式程序員在洞察問題方面會遵循...
摘要:是一個構建在上,基于模型的的并發框架,為構建伸縮性強,有彈性的響應式并發應用提高更好的平臺。上述例子中的信件就相當于中的消息,與之間只能通過消息通信。當然模型比這要復雜的多,這里主要是簡潔的闡述一下模型的概念。模型的出現解決了這個問題。 Akka是一個構建在JVM上,基于Actor模型的的并發框架,為構建伸縮性強,有彈性的響應式并發應用提高更好的平臺。本文主要是個人對Akka的學習和應...
摘要:在代碼整潔之道,提出一種軟件質量,可持續開發不僅在于項目架構設計,還與代碼質量密切相關,代碼的整潔度和質量成正比,一份整潔的代碼在質量上是可靠的,為團隊開發,后期維護,重構奠定了良好的基礎。 現在的軟件系統開發難度主要在于其復雜度和規模,客戶需求也不再像Winston Royce瀑布模型期望那樣在系統編碼前完成所有的設計滿足用戶軟件需求。在這個信息爆炸技術日新月異的時代,需求總是在不停...
摘要:高性能代碼的最佳實踐前言在這篇文章中,我們將討論幾個有助于提升應用程序性能的方法。要獲得有關應用程序需求的最好最可靠的方法是對應用程序執行實際的負載測試,并在運行時跟蹤性能指標。 showImg(https://segmentfault.com/img/bVbtgk4?w=256&h=254); 高性能Java代碼的最佳實踐前言 在這篇文章中,我們將討論幾個有助于提升Java應用程序性...
閱讀 1199·2021-11-24 11:16
閱讀 3427·2021-11-15 11:38
閱讀 1919·2021-10-20 13:47
閱讀 546·2021-09-29 09:35
閱讀 2192·2021-09-22 15:17
閱讀 1013·2021-09-07 09:59
閱讀 3373·2019-08-30 13:21
閱讀 2903·2019-08-30 12:47