【背景】
日常查看小組成員的日報的時候發(fā)現(xiàn)有如下一段文字:XX組件中發(fā)現(xiàn)多處主線程讀收文件钉赁,與開發(fā)XXX溝通后蹄殃,開發(fā)表示這是由于新組件替換導致線程管理出錯,已經(jīng)在跟進修復中你踩,無需再提Bug單了诅岩。
【背景的擴展】
然后我把這段話在IM里發(fā)出來問我們的組員,碰到這個情況下會出現(xiàn)什么后果带膜。大家如是回答
L: 無需提單吩谦,這很嚴重的
X: 那就問他要鏈接看看吧,而且是在跟進中, 跟進中 和 沒跟進 都屬于 未解決膝藕,除非已經(jīng)在最新checkin中修復了
J: 如果類似的事情沒有提單式廷,開發(fā)說不需要提單,這時和開發(fā)解釋一下我們需要mark一下芭挽,開發(fā)也是可以理解的滑废。不用不好意思和開發(fā)說。
M:發(fā)現(xiàn)的問題是一定要提單袜爪,如果提單重復了策严,可以把重復單合并,但是如果最后沒有單饿敲,那就很尷尬了。逛绵。怀各。
C:他說在跟進 我怎么知道是不是在忽悠我呢 什么時候解決
K:不提單,感覺開發(fā)也不會立刻重視該問題术浪,快速修改問題的驅(qū)動力也會不足瓢对。。胰苏。
【自己開了下腦洞】
今年4月份的時候硕蛹,本人的腳因為感染發(fā)炎∷恫ⅲ看過幾個醫(yī)生法焰,用了好多種藥才好。因為親身經(jīng)歷了這個事倔毙,才發(fā)現(xiàn)病例對病人太重要埃仪。?
事情是這樣的,當本人發(fā)現(xiàn)腳發(fā)炎的時候陕赃,去看了醫(yī)生卵蛉,用了3天藥以后颁股,不知道是因為鞋子不透氣還是藥的問題,腳腫得跟個熊掌似的傻丝。當時心里是崩潰的甘有,就趕緊去了醫(yī)院,剛好門診下班了葡缰,就去看急診亏掀。結(jié)果急診的醫(yī)生看了看我的腳,收了我的掛號單运准,就讓我自己去買個典酒來涂幌氮。 沒有任何文本樣式的診斷被記錄下來。就這樣我就回去自己涂典酒了胁澳,涂了一天以后该互,腳背血肉模糊了。再去看醫(yī)生(這里看的是門診)韭畸,醫(yī)生才說這個是因為第一次來看的時候宇智,開的那個藥膏過敏。
這個事
對于病人的我來說胰丁,因為看急診那次草草了事随橘,沒有引起重視,導致本來一個很簡單的事惡化了锦庸,前前后后耽誤了我一個月的時間机蔗。
對于急癥科的醫(yī)生來說,因為他沒有任何的記錄甘萧,如果我要去追究萝嘁,也和他沒有關(guān)系(這到是一個不錯的免責的辦法)。但是對于他自己的技能的精進扬卷,真心沒有任何好處牙言。
對于這個醫(yī)院來說,總體給人的感覺是怪得,起碼我不會推薦朋友去這個醫(yī)院看病了咱枉。
【回來說說測試】
記得2015年年初的時候,有這么一個案例:有用戶反饋所在相冊有大量的圖片的情況下徒恋,手Q打開圖片選擇器好卡蚕断,反到微信很快。
我們開始了競品測試第一輪:
測試環(huán)境:iOS 8.1.2:iPhone 5c ? 手Q和微信均為2015年年初的Appstore版本
測試方法: ?通過hook入挣,計算從點擊圖片選擇按鈕到 圖片選擇器頁面viewDidAppear函數(shù)執(zhí)行完成(也就是相冊圖片加載完成)的時間基括,(設(shè)置微信默認進入相機膠卷相冊頁面)
測試圖片說明:測試圖片均為手工導入的照片,大小在1M以內(nèi)财岔,平均大小300K左右风皿,分別測試了1000張河爹,3000張,和5000張的情況
測試結(jié)果:
首次加載耗時(首次加載是指每次測試前都殺進程重啟)
第一輪競品測試結(jié)果提交團隊后桐款,初步的診斷結(jié)果是: iOS8 有新的相冊的接口咸这,手Q未使用,故推測是此原因?qū)е率諵打開相冊的速度比微信慢魔眨。接下來開發(fā)同學排了個技術(shù)優(yōu)化需求媳维,手Q調(diào)用iOS8新接口。
是這樣么遏暴?這里有兩個疑點解釋不了
一:如果是相冊調(diào)用的接口的問題侄刽,那也就是說iOS7上手Q與微信打開速度應(yīng)該是持平的
二:首次打開的速度有這么個差距,那非首次呢朋凉?
帶著上面兩個問題州丹,我們開始了第二輪競品測試,測試數(shù)據(jù)如下:
iOS7系統(tǒng)上杂彭,手Q的相冊打開速度比微信快4倍
iOS8墓毒,非首次打開耗時,手Q比微信快亲怠。
第二輪競品測試結(jié)果提交團隊后所计,診斷結(jié)果是:手Q做了緩存,加載相冊整體比微信快团秽,而且圖片越多越明顯. ?那也就是說iOS8的新相冊訪問接口對首次打開的速度有較大提升主胧?與此同時,我們的競品測試報告轉(zhuǎn)給微信團隊后习勤,他們立即做了優(yōu)化讥裤。我們得知后
做了第三輪的競品測試,測試數(shù)據(jù)如下:
iOS6的iPhone4s上首次加載姻报,微信耗時優(yōu)化到了0.54秒(還記得之前微信在iOS7,IPhone5C上的首次打開耗時是16秒么间螟?)手Q耗時是微信的4.8倍
所以覺得這應(yīng)該不是iOS新老接口的問題吴旋,應(yīng)該有別的原因。
通過hook 相關(guān)函數(shù)發(fā)現(xiàn)
一:微信只掃描37張厢破,就展示圖片選擇器的界面(viewDidAppear)荣瑟,之后等用戶向下滑動看更多的照片,才繼續(xù)掃描摩泪;所以微信才能達到0.5秒加載相冊選擇頁笆焰。而手Q是掃描完所有圖片才展示,所以加載比微信慢见坑;
二:當照片為5000張的時候嚷掠,手Q調(diào)用某個函數(shù)用來查詢資源類型次數(shù)達到7000+多次捏检,超過照片張數(shù)
最后,敲定優(yōu)化方案(優(yōu)化手Q的展示邏輯不皆,贯城,去掉枚舉相冊相片過程中,對相片資源的屬性頻繁的訪問和設(shè)置霹娄,更合理的緩存能犯,資源的枚舉過程從主線抽離到子線程,優(yōu)化reload時機犬耻,去掉冗余的邏輯與一些無意義的reload操作)
最終的優(yōu)化效果
案例講完了踩晶,來個總結(jié)吧,如果當時我們出的第一輪數(shù)據(jù)給到項目組后枕磁,開發(fā)認為是手Q的接口調(diào)用沒有與時俱進渡蜻。再加一句,已經(jīng)在跟進修復中透典,無需再提Bug單晴楔,我改個接口就好了。那這里的結(jié)果是什么峭咒?