正文

職場故事 (3) 小試牛刀

(2018-04-01 11:45:27) 下一個

很快接到了一個新任務。有一個 screen顯示大公司(有幾百個子公司)的信息,要花一分多鍾才能把數據load出來。而其他的screen 通常都隻需要幾秒鍾。我的任務是讓這個screen load得快一些。

我的 lead建議我做paging, 每一頁隻顯示一部分子公司,這樣load一頁就不會太慢了。可是我覺得這樣不能解決全部問題,因為有些sorting的功能還是需要所有子公司的信息。於是我決定仔細看code,找出問題究竟在哪裏。連續看了兩天,終於看出問題來了。原來程序裏有一個循環,load每個子公司的信息都要查詢一次數據庫。即使每次查詢隻要0.1秒,600個子公司就需要60秒,即一分鍾。所以我覺得是要把這一部分程序改成一次查詢就把所有子公司的信息都load出來。

決定好了我就開始改程序。但緊接著發現一個查詢還不行,要分成幾個,因為load的信息比較複雜,一個查詢不好寫。這也許就是為什麽原作者調用了一個現有的查詢,隻是把它簡單地寫到了循環裏。因為改了查詢,還要改數據結構,這樣才能把幾個查詢的結果很快連接起來。改完程序後速度確實有提高,但感覺還是不理想。再仔細讀code,發現後端有個數據庫程序運行很長時間。再把這段程序看一遍,發現它也有同樣的問題,而且還返回了很多不需要的數據。我跟DBA溝通之後簡化了這段程序。等一切都改好,原來load這個screen需要一分多鍾,現在隻需要7秒。

我非常興奮,但知道任務還沒有結束,我還需要把這個screen上每個功能測試一遍,保證沒有產生新的問題。等我仔仔細細確認無誤後,我才把程序交給QA測試。最後沒什麽問題,順利上了production。記得在一次小組會上我提到了這個速度的大幅提高,有一個人說用戶應該請我吃飯,我隻是笑笑而已。我想我在意的是我隻想把工作完成好,使用戶滿意是我們工作的基本目標。

一切看起來是這麽順理成章,但現在我從一個過來人的角度看,還是能看出一些問題。現在知道水有多深之後,我也不敢輕易大改程序,因為可能會產生新的問題,讓用戶無法使用。當初真是有初生牛犢不怕虎的勁頭。還有就是有些領導為謹慎起見,可能也不會同意一個新人就這麽大改程序,這也可以理解。說到底我的領導還是給了我一定的自由度,也給了我充分的信任。我才應該要感謝他們。

[ 打印 ]
閱讀 ()評論 (0)
評論
目前還沒有任何評論
登錄後才可評論.