close

今天遇到一個有點意思的案例,使用者反應電腦再執行EXCEL時會經常出現卡頓的狀況,先前已經針對這個問題執行過一次處理,主要是停用不需要的增益集,(Adobe Acrobat PDFMaker Office COM 增益集)停用後,原本已經改善為在有類似症狀,但今天忽然反應又出現相同的問題。

啟用系統TASK監視器後看出檔案開啟時CPU及RAM的耗能極高,先通過微軟官方的Microsoft 支援服務及修復小幫手 (下載連結)來進行自動排解,但執行後問題依然未解。

本案例的檔案實際大小約為12MB,檔案中包含三個分頁每個分頁包含一萬三千筆左右的資料,硬體硬體為CPU:AMD Ryzen 9 5900X, 8G RAM效能上應足以應付 ,檔案並不會太大。磁碟存取的資源耗用也不大。將之丟到RAMDISK中執行,問題依舊。

實際開檔檢視後發現正在計算(12執行緒) 由0%慢慢到10%..24%..30%.....歷時間約莫5~6分鐘,以前敘述硬體條件而言確實執行的較為緩慢。

但是,顯然這是因為EXCEL軟體的先天限制,不管電腦的硬體規格有多高階,EXCEL對於大多數指令還是以單核運算為主 ,EXCEL偵測到的12緒並不代表這12CORE都有同時參與運算,開啟CPU負載檢視就能看出所有CORE的執行狀態,雖然支援多核心,但是因為公式計算在執行上需要考量到前後資料銜接的問題,所以同一時間並不會耗用全部的CORE運算能力。

另外一個可能就是隱藏或空白的物件導致檔案運作卡住 ,經過檢視本案並無此現象,故合理判斷應為計算公式所致。

解決方案:先關閉公式的自動計算功能,避免更動一個儲存格就讓所有公式都跑一次。關閉自動計算之後,公式可以隨時讓USER手動進行計算,或是待檔案開啟/關閉時才進行計算。

本案實際的原因其實可歸結到公式設計層面來思考,資料的多寡並非重點,主要是公使用了無限制範圍的寫法

例如:一樣是搜尋 ,有A1:A1000 和 A:A 這兩種寫法,以A1:A1000而言是搜尋 1000格,但若寫成A:A則是搜尋全部 1048576格

本案例用A:A的方式寫公式簡單,但是當資料比數到達一定數量後就出現這個效能耗盡的問題了。

 

arrow
arrow

    itcoworker 發表在 痞客邦 留言(0) 人氣()