關於文章訂閱
文章 >軟體延遲就像慢性病 (July 08, 2026)
English | 中文

軟體延遲就像慢性病

July 08, 2026

什麼是軟體延遲(Latency)?延遲就是點了按鈕以後需要等多久網頁才會出現,點播放以後多久影片才真的開始播。延遲就像慢性病一樣,大部分都時候大家都不會感覺到它的存在,或有那麼點延遲但不至於影響生活。所以在軟體工程師的眼裡,延遲並不是臭蟲(Bug),畢竟軟體做了它該做的事,也滿足了客戶的需求。客戶也沒有人在抱怨,所以軟體工程師繼續軟體更新,繼續增加新的功能。

延遲就像慢性病一樣,慢慢地它就變成了一個病,但什麼時候開始變成了問題,也沒有人說的準。如果網頁點了,一秒鐘後才出現了新的頁面,這是不是一個問題?影片播放以後五秒鐘過了才出現畫面,這算不算一個臭蟲?工程師會說:如果要花一秒鐘才出現下一個網頁,那我們就加入一個一秒鐘的過場動畫;如果影片五秒鐘後才出現,那我們就加一個轉盤,顯示讀取進度。就像慢性病一樣,身體不舒服了,就少走路;會喘氣了,就少上下樓梯。方法是人想出來的,多用點巧思,軟體還是在跑,跑了慢一點就是了。

直到軟體用戶越來越多,網站資料越來越大,程式也因為越加複雜,跑起來越來越慢,就在某一天大家突然覺得它是病了!它不是邏輯上的臭蟲,而是性能上的臭蟲。這種臭蟲很可怕,因為一旦我們決定了它是臭蟲,突然間軟體裡到處都是臭蟲。就像突然發現有高血壓,那麼生活上許多的習慣都被打上了問號。譬如,今天如果我們決定,用戶等超過10秒以上就是性能臭蟲,那麼從網站前端到資料後端,只要對這十秒鐘有所貢獻,那都可能是臭蟲。沒錯,昨天都沒問題的軟體,今天到處都是臭蟲。

性能臭蟲除了是可以一條龍從前端到後端都是蟲以外,它更可以是臭蟲包臭蟲,就像撥洋蔥一樣,撥完一層還有一層,撥到淚流滿面,欲哭無淚。譬如,用戶登入網站需要花15秒鐘,工程師們查了系統紀錄,發現搜尋用戶帳號花了10秒鐘,於是工程師花了幾天改善,終於神奇的把時間壓到0秒鐘,於是用戶登入只要5秒鐘了?錯!用戶登入還是一樣花了15秒。工程師們查了系統紀錄,才發現雖然用戶帳號只要花0秒查詢,但查詢用戶密碼也是要花10秒,而用戶登錄同時需要帳號和密碼,所以花了幾天的時間沒有做到任何改善。許多軟體程序都是平行運算進行的,而常常系統只會回報最差的一條路徑,所以往往解決了一條,會又發現了無數條也有問題的程式路徑。

可憐的工程師們,上級質問為什麼花了幾天沒有任何進步,工程師們只能支支嗚嗚地說,因為又發現了新的臭蟲。上級不很開心,怎麼上禮拜沒臭蟲,這禮拜就一大堆,還是一隻一隻的發現。所以改善軟體延遲是不受歡迎的工作,一方面它不是設計嶄新的新功能,可以在設計文件上揮毫設計,完成後很有成就感;另一方面他很難跟上級交代進度,畢竟是一個臭蟲,改善程度跟需要的時間都很難預估。

像是煉蠱一般,每個工程師輪流在裡面投一點自己喜歡的東西,然後攪一攪,希望它不會爆炸

我曾經就待過一個組,因為客戶要求多,新功能在時間的壓力下,往往沒有考慮最佳的演算法,就一個一個發布出去。所以整個軟體除了像慢性病以外,也像是煉蠱一般,每個工程師輪流在裡面投一點自己喜歡的東西,然後攪一攪,希望它不會爆炸:直到那一天,它起了化學作用,整鍋就都不能用了。

後來重新把脈看病、整鍋倒掉重做的工作就掉到了我這個頭上。我剛加入這個新組,就要一方面必須日以繼夜的修臭蟲,另一方面還要撰寫文件,像上級解釋為什麼進度怎麼慢,臭蟲越挖越多。後來總共花了半年的時間,才把軟體延遲從六分鐘(你沒看錯,就是六分鐘),壓到了20秒。還可不可以改進?我也不曉得,這個就要問後來新進的員工。畢竟這麼好的工作與學習經驗,當然是要維持傳統,交接給新人繼續做下去。


訂閱阿丹的電子報

科技 & 我的動態