提昇 Excel 程式效率
這兩天 DR 在處理一支自己所寫的工具在特定狀況下效能嚴重低落的問題,這支工具是用 Python 寫成,其主要用途是分析特定的 XML 檔案,再經由 COM 介面呼叫 Excel 產出試算表格式的報告結果。就在昨天,DR 接到一支不過 2MB 大小的 XML 檔案,用工具跑卻遲遲沒有結果,比它還大上許多的檔案也未曾遇過這問題。於是 DR 置入了一些 print 函式監看程式的處理狀況,並關閉一些模組來交叉測試。從中發現這支 XML 雖小,符合個別分析條件的資料量卻是異常的多(基本上,這是一支不正常的檔案),致使得工具雖然沒有當掉,但仍在一些程序上停滯不前。
DR 接下來所做的事情就是將程式碼清查一遍,尤其 DR 常仗著硬體速度越趨發達、執行的工作又單純,對程式碼的效能便不是很在意,所以很容易寫出低劣的程式碼……在清查過程中找到了一些明明可以先經過篩選從而減少迴圈次數的程式段落,將其修正後再試一次,執行效率確實有變快一點,但還是不夠。
於是 DR 將程式碼一段一段、各個模組拆開來測,發現真正影響效能的元兇僅是單一一行程式碼(不過因為迴圈的緣故,要跑很多次):
