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