2015-04-30 23 views
1

我在Visual Basic中製作了一個小程序,用於計算通過激光時出現的產品。
圖表每填充一個數據點並說出輸出是高還是低,並在其上繪製圖表,以便我們可以看到何時在某個時間點沒有流量。填充圖表時程序變慢

經過大約10個小時後,程序變慢,因爲它每秒鐘都會記錄下來並放入圖表中。圖表運行在窗體計時器上。

有沒有辦法讓它更快或清除緩存並繼續填充圖表?
當產品完成後,我按下一個按鈕,然後將圖表保存爲.jpg,然後清除圖表,然後再次啓用。生產時間長達20小時。

+0

我們可能需要查看一些有關添加/清除緩存的代碼。 – Barett

回答

0

每20秒鐘1個數據點是72000個數據點。您性能問題每秒顯示和更新70K數據點一次,儘管這是在VB中。

你可能想重新思考你如何做圖表。你真的需要向運營商展示所有70K數據點嗎?如果只顯示最後2K點,該怎麼辦?您不必丟棄早期的數據,只需將它保存在csv文件或訪問數據庫中的其他位置,或其他任何位置(理想情況下位於MSSQL Express或MySQL數據庫中),而不是圖形對象。

如果你需要顯示整個運行的圖形,請考慮平均。如果你將50個點的組合歸爲1個平均數據點?同樣,您不必丟棄實際數據,只需將其保存在別處即可。

在運行結束時,您可以單擊報告按鈕以從所有70000個存儲點生成圖形,以導出/存儲爲jpg。但這是一次性的事情,即使需要一段時間 - 這也不是那個關鍵的問題。

+0

非常感謝您的回覆!你讓我想到不同的解決方案。這是運營商查看過去幾個小時發生的最佳方式,但最後的10000個數據點也是解決方案。如何在不丟失數據的情況下顯示最後的10000個數據點?產品完成後,數據將打印在文檔上,我需要所有數據。非常感謝您對我的想法=) – Randy

+0

將您的數據存儲在MS Access數據庫中。您可以查詢最後的X個數據點以顯示在您的圖表上。 – RaGe

+0

好的,我會試試這個,但是如何在10000秒之前存儲每個數據點? – Randy