Marginal Leak vs. Fixed Leak
在實務上,一般我們將 resource leak 分成兩大類,一種是程式執行一次,僅會發生一次的 leak,另一種則會隨著每次運算而屢次發生的 leak。今天我突發奇想,這兩者,是否可稱之為「fixed leak」與「marginal leak」?
在經濟學裡,「邊際成本 (marginal cost)」指會隨著每單位生產的新產品而增加的成本,例如製作每個麵包,所需要之麵粉的購買成本。Wikipedia 如是說:
在經濟學和金融學中,邊際成本指的是每一單位新增生產的產品(或者購買的產品)帶來到總成本的增量。
與之相對的則是「固定成本 (fixed cost)」,不會隨著業務量而變化的成本,如烘培麵包所需之烤爐的購置成本。
而當在寫程式的時候,可能會碰到的 resource leak,其行為也可以分成兩大類:程式執行一次,不管做了多少事,固定會洩漏一定量的 leak,以及隨著做的事情越多,洩漏的量越多的 leak。
套用經濟學的概念,我在想,其實可以把上面這兩大類 resource leak,稱呼為:
- fixed leak:程式執行一次,不管做了多少事,固定會洩漏一定量的 leak;
- marginal leak:隨著做的事情越多,洩漏的量越多的 leak。
其中,marginal leak 較為嚴重,會隨著程式執行越久,吃掉越多的資源,最後導致資源不足,使程式當掉,甚至當掉整台電腦。
而 fixed leak 問題較小,若時程不夠,通常我們會忽略之。不過要小心的就是,若程式支援某種 reset 機制,如某些 server 收到 SIGHUP 會重讀設定檔,則可能某些 fixed leak 會現出真面目,其實是 marginal leak,會隨著 reset 而增加洩漏的量。
好奇,用加雙引號的 "marginal leak" 查了一下 google,發現只有 160 筆。區分這兩種 leak,一般都是用什麼專有名詞啊?



One Comment
continuous leak 如何?
順帶一提,按照 marginal cost 的定義來推衍,marginal leak 應該是「隨著 leak 總次數的增加,每一個新的 leak 所損失的資源量」才對 :p
Post a Comment