這幾步,讓我的程式執行時間從十幾分鐘優化到十幾秒

2021-09-17 04:07:53 字數 1468 閱讀 7681

優化參考知乎大牛,寫的真心很讚!

1、關閉螢幕重新整理

vb每次對excel**操作,螢幕進行重新整理操作,可以先關閉重新整理,等所有操作完成之後,一次重新整理,這會節省大量的資源和時間

'**最前加上

'結尾加上

2、減少vb與excel**的互動

我的程式初始版本是遍歷excel的每乙個單元格,然後對資料進行處理,再寫到另乙個**中的每乙個單元格,3000多條資料需要14多分鐘,簡直龜速!後來,關閉螢幕重新整理,將原始資料存放在陣列中,對陣列進行訪問,時間大大縮短到只需要5多分鐘。後來想到即然原始資料可以放到陣列中,那麼結果也可以先存放在陣列中,最後再一次性寫到excel**中,照著這個思路去實施,最後程式只需要10s左右就可以處理完3000多條記錄。

dim origindata() as variant, relation() as variant, resultdata1(1 to 500, 1 to 6) as string, resultdata2(1 to 500, 1 to 6) as string

』原始數存放在origindata和relation中

rows = workbooks(2).sheets(1).usedrange.rows.count '打卡記錄工作表的行數

cols = workbooks(2).sheets(1).usedrange.columns.count '打卡記錄工作表的列數

relarows = workbooks(3).sheets(1).usedrange.rows.count '學生與老師對應關係工作表的行數

relacols = workbooks(3).sheets(1).usedrange.columns.count '學生與老師對應關係工作表的列數

dim sheet1 as excel.worksheet, sheet2 as excel.worksheet

set sheet1 = workbooks(2).sheets(1)

set sheet2 = workbooks(3).sheets(1)

on error resume next

origindata = range(sheet1.cells(1, 1), sheet1.cells(rows, cols))

relation = range(sheet2.cells(1, 1), sheet2.cells(relarows, relacols))

'最後將資料寫到excel**中

set sheet1 = workbooks(1).sheets(1)

set sheet2 = workbooks(1).sheets(2)

range(sheet1.cells(1, 1), sheet1.cells(cnt1, 6)) = resultdata1

range(sheet2.cells(1, 1), sheet2.cells(cnt2, 6)) = resultdata2

php程式執行時間 php計算程式的執行時間

首先我們分析一下原理,要想得到程式執行時間,那麼可以在程式最開始執行的時候定義乙個變數記下當前時間,然後等我們程式執行完之後再記錄一下當前的時間,兩者相差就是該程式執行花費的時間了。這裡介紹一下 microtime 這個函式,microtime 用的不多,但是不能不知道這個函式,它是返回當前 uni...

獲取程式的執行時間

c c 中的計時函式是clock 而與其相關的資料型別是clock t。在msdn中,查得對clock函式定義如下 clock t clock void 這個函式返回從 開啟這個程式程序 到 程式中呼叫clock 函式 時之間的cpu時鐘計時單元 clock tick 數,在msdn中稱之為掛鐘時間...

檢視程式的執行時間

使用time命令可以在linux系統中了解單個程式和它的同步子程式的執行效能。它報告實際時間,也就是從程式開始到結束所使用的時間 real 也報告由該程式使用的 cpu 時間。使用方法如下 908869 cnsha05nb70810 time test42 1958 7036 0123 4567 8...