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