非常有挑戰性的問題,提高時實重新整理速度 delphi / windows sdk/api
非常有挑戰性的問題,提高時實重新整理速度
比如做一套類試影吧的系統,需要乙個時實監視客戶端的乙個收費軟體
監視台用stringgrid 控制項實現,時實(每秒鐘一次)重新整理資料庫中的乙個由server後台寫好
好的乙個臨時表,stringgrid判斷字段值改變時才重畫,
這種方法,起初資料表這有幾十條,占用cpu 時間才8%左右,但資料庫加到
2000多條時,cpu 時間馬上公升到 70%,
我估計主要的時間是用在adoquery.open上了
還有stringgrid是通過 for 迴圈給每行賦值的。
請問,有沒有提供好的思路和方法!
應該不至於吧,你幾十條都占用了cpu 8%,可能是寫法有問題吧。
你幹嘛要不停地判斷呢?有時間做判斷不如直接寫上去好了。
2000多條記錄,重新整理一次應該沒多長時間。
首先說明
1、首先跟蹤一下,看看時間都花在那裡了
2、如果你的sql語句不是特別奇怪,那麼最多的時間是花在重畫stringgrid上
3、畫stringgrid的時候不要一下子都畫出來,把當前顯示的畫出來即可,然後當stringgrid滾動的時候繼續畫
2000條都讀取出來有意義嗎?還是做成翻頁的好。
在修改表的時候在其它地方設定乙個狀態,所有的客戶僅檢查這個狀態。
用stringgird? 為什麼不用dbgird,這樣效率更高呀! 不解! 還有為什麼不做分頁,就是說,設定乙個時間範圍,把記錄分為加急,就緒,一般,三個等級來排序。 這樣可以優先處理那些即將到時的資料。
感謝大家的回覆!
說明,我做的一套影吧的收費管理系統。
客戶端是機頂盒,所有的資料都是通過 server.exe charge.dll 完成的,儲存在
資料庫中,我要的就是時實顯示每個客戶端的狀態:
我也知道dbgrid速度比較快,但存在幾個問題:
1、重新整理的時候dbgrid總是很閃;
2、必須繫結資料來源;
3、介面操作的靈活性也沒有stringgrid好;
那我建議你用過socket來做吧!
內部用乙個執行緒來檢查是否有更新,如果資料有變化在重新整理介面.這樣介面重新整理的頻率就很小很多。也就不閃了。
接受 winxkm(蹩腳的程式設計師) 的意見
極具挑戰性的工作 公升級模式庫從CQ2002到CQ7
問題 現在有兩套模式庫,我稱其為a,和 b a是用 cq2002 sqlserver2000開發的 b是用 cqv7 oracle10.2 開發的 現在我們的使用者這兩套系統都在使用 現在的問題是 用 cq7客戶端去使用 a,會報錯 我原來認為 cq7客戶端去執行a肯定是相容的 但是現在從ibm技術...
非常有趣的遞迴問題(最近面試問到的)
古典問題 第三個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?意味著生長期為2 這裡我採用兩種結題思路第一種不考慮遞迴,採用字面解釋進行基於類物件的做法 class rabbit public void setname string nam...
求簡單多邊形面積時非常有用的「鞋帶公式」
學習和介紹乙個有用的求任意簡單多邊形面積的經典公式。所謂 簡單多邊形 可以是凹 或凸多邊形,但原則上邊與邊之間不能有交叉 或者,拓撲一點,從多邊形捲繞數的角度,多邊形內的點捲繞數只能是 1 這個公式有悠久的歷史,而且計算中十分有用,可惜維基裡面只有英文版。這裡的shoelace,鞋帶 並不是人名,所...