在做性能測(cè)試平臺(tái)的優(yōu)化過(guò)程中,由于啟動(dòng)任務(wù)相對(duì)其他測(cè)試任務(wù)比較頻繁,而目前30次兩個(gè)包的交叉對(duì)比(30次)測(cè)試需要耗時(shí)30分鐘整,因此打算優(yōu)先對(duì)測(cè)試流程做一次優(yōu)化,將測(cè)試時(shí)間消耗降低到20分鐘。
由于一開(kāi)始估計(jì)樂(lè)觀(guān),認(rèn)為啟動(dòng)時(shí)間,一臺(tái)設(shè)備理論上啟動(dòng)頂多1s,1*2*30也就60s,加上其他開(kāi)銷(xiāo),5分鐘都?jí)蛄耍軠p少到20分鐘應(yīng)該小半天就能做完了。
于是就來(lái)到了第一步:
1.review代碼流程
(1)把啟動(dòng)流程里相關(guān)的sleep全部review一遍
確實(shí)有一點(diǎn)效果,因?yàn)橛幸徊糠謘leep在啟動(dòng)任務(wù)執(zhí)行階段,60倍杠桿放大后很可怕,因此去掉部分sleep,居然就減少到了23分鐘了。
第二步一時(shí)想不出了,方法耦合嵌套相當(dāng)多,而且適配多個(gè)版本的產(chǎn)品,遷一發(fā)動(dòng)全身,第二步想到的就是將可疑方法監(jiān)控起來(lái)
2.將可疑方法的耗時(shí)監(jiān)控起來(lái)
為了方便監(jiān)控,增加了兩個(gè)個(gè)裝飾器來(lái)統(tǒng)計(jì)耗時(shí)
def costs(fn): def _wrapper(*args, **kwargs): start = time.time() fn(*args, **kwargs) print "%s 函數(shù)cost %s 秒" % (fn.__name__, time.time() - start) return _wrapperdef costs_with_info(info): def _wrapper(fn): print "info: " + info return costs(fn) return _wrapper
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線(xiàn)安全]玩轉(zhuǎn)無(wú)線(xiàn)電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26