星期日, 4月 15, 2012

Excel Calculation Performance 計算效能

如何加快EXCEL的計算效能呢?
首先.建議你閱讀如下文章
Excel 2010 Performance: Improving Calculation Performance
將我覺得較有用的列出如下(個人為解決ole automation時的效率問題)



1.改變為手動計算  Excel.Calculation := xlCalculationManual;
   自行呼叫EXCEL.Calculate;
2.改變 Excel.WorkBooks[1].ForceFullCalculation := True
3.關閉"multi-threaded calculation"  Excel.MultiThreadedCalculation.Enabled := False;

關於第3點要特別說明,因為發覺EXCEL預設此選項為開啟的,但在實測卻覺得EXCEL的計算並不快速! 查看原文
"You can manually specify the number of threads to run at the same time. This number can be more than the number of processors on the computer. This is useful if, for example, you have XLL user-defined functions dependent on long-running external calls to a database server. If the database server can process multiple requests in parallel, you can effectively use multithreading even on a single-processor system."
可以得知,在特定的情況下開啟才會加快計算效能,而我個人測試.不論是在文章中的"環境"或是最原始的單一EXCEL環境,關閉此選項均比開啟來得快!

星期六, 4月 14, 2012

電腦的時間精度問題

之前寫的簡易校時,是因為發覺系統時間會有不準的情況,但當時並沒有去探討時間不準的情況有多嚴重


直到有支程式需長時間執行的情況下,才發覺此問題的嚴重性! 因為捉取到的資訊是包含了外部主機主機時間與主機寫入時間,久了竟然發覺時間差了2秒以上


最後請出了NTPClock,先取消自動校時的設定,長時間跑下來如下

1.開機約18小時.系統快了約1.5秒
校時18
2.開機約29小時.系統快了統2.9秒
校時29
3.測完2後.系統關機, 重開機後是約 42小時後(從開始計算開始), 系統慢了2.1秒
校時42-跟29間有關機
4.50小時,系統慢了1.7秒
校時50

此情況在WINDOWS 7 家用進階版上測試, 主機為ASUS 家用I7
以此情況來看.在WINDOWS執行時.系統時間會自動變快, 而在關機模式下,系統會變慢!
之後又在其它二台電腦上進行測試.有著相同的結果!
若你要進行測試.請先關閉WIDNOWS中的自動校時設定

星期六, 4月 07, 2012

SQL ERROR 9003 while attaching

程式執行時.發覺找不到系統所需的資料庫! 發覺DB己被卸載
手動掛載DB,於附加資料庫時出現 9003的錯誤訊息
發覺該台電腦有中毒.先行解毒! 備份MDF與LDF


進入緊急修覆模式
TSQL
ALTER DATABASE A01 SET EMERGENCY
ALTER DATABASE A01 SET SINGLE_USER
DBCC CHECKDB (A01, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS
此語法也無法修覆DB,最後使用前二者語法,讓DB可以讀取出資料,使用語法硬倒重要資料進到新DB