我正在研究一個看起來像某種時間問題的錯誤,所以我對Delphi 7中事件的工作方式有點好奇。然後我們通過一個函數發送一些數據給我們的應用程序COM接口,並在COM線程引發的事件中處理它。看起來事件中有很多代碼,執行需要的時間越來越長,過了一段時間後整個應用程序崩潰了。在圖形和事件內部的大數組中存在可能影響時間的調用。我一直無法發現任何顯着的內存使用量增加,並沒有機會運行任何分析器來檢查泄漏。另外,要測試的顯而易見的事情是將其中所有代碼的事件剝離,以查看我們是否可以運行更長的時間。德爾福7和事件
Delphi中的事件是串行或並行的,也就是說,如果我在執行一個新事件時發生了什麼 - 發生了什麼?它是否在某種自動線程中並行運行,是忽略還是排隊?
如果排隊等候,應用程序崩潰之前我可以在隊列中擁有多少個隊列?
索引到一個大陣列需要更長的時間進一步進入它你是?即使它的大小是固定的?我認爲這不應該讓我尋找需要時間的泄漏和分配。如果我通過事件發送了一個對象,我應該在事件內還是在「調用」代碼中處理它?
什麼東西通常在Delphi中不能很好地擴展?我能找到什麼會增加執行時間?
最後,由於這是COM相關的,任何指向COM常見陷阱的指針都會被讚賞,儘管我意識到這很棘手。儘管如此,我確實掌握了共同初始化。
我完全不同意你的最後一段。天真==慢字符串處理可以在每種語言中實現,當然也可以在C++中實現。用一個適當的算法在字符串中將True和False置爲小寫,應該可以處理每秒幾兆字節。如果(取決於字符串長度)10秒或100毫秒是可能的,從15秒到2秒?我不知道... – mghie 2009-06-08 19:06:49