轉帖|實施案例|編輯:鄭恭琳|2020-08-05 10:58:44.220|閱讀 430 次
概述:AQtime 3改變了我測試應用程序性能的方式。回顧過去,我必須承認我花了太多時間進行許多不同的測試,并以某種史前的方式對應用程序進行性能分析。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
我是使用Delphi 6開發電子郵件分類程序的共享軟件開發人員;其主要目標是打擊垃圾郵件。該應用程序使用基于Naive Bayes Classifier的高級消息內容分析。我的問題與界面有關。我的軟件處理的每封郵件都保存在一個文件夾中。該文件夾包含RAW格式的電子郵件。如果用戶想要瀏覽消息歷史記錄,則他將打開一個歷史記錄頁面,其中位于歷史記錄文件夾中的每條郵件消息都表示為TListView組件中的一項。TListView有四列,每列顯示從歷史記錄文件夾分配給消息的不同數據。我的問題是,即使在快速的計算機上,創建列表也非常慢,因為在找到數據并將其顯示在列表中時必須一次讀取許多文件。這是一個非常令人討厭的問題,我花了很多時間研究為什么列表視圖刷新如此緩慢。
我決定尋找一種可與Delphi 6配合使用的工具,從而使我能夠精確地分析自己的代碼。對于稱為“探查器”的工具來說,這類任務很典型。探查器監視應用程序,報告在功能上花費了多少時間(定時)以及調用了函數多少次(命中計數)。這可以使您了解應用程序代碼中的性能瓶頸可能在哪里。
我記得我曾經使用過一個名為“MemProof”的工具,它是一個簡單但功能強大的軟件,旨在發現內存泄漏。我很好奇該工具是否仍在開發中,目前的狀態如何。我希望我會發現MemProof現在也是一個事件探查器,因此我樂觀地對Google執行了“MemProof”搜索,然后單擊了第一個結果URL。我找到了什么?可以免費下載MemProof的頁面;不幸的是,它仍然具有相同的功能。這是一個內存泄漏查找程序;可惜......但是列出MemProof的頁面提供了更多工具。我決定花一些時間在那里閱讀其他產品。我單擊上方的“產品”菜單,找到了探查器!我非常高興地讀到:“AQtime 3——AQtime是用于全面分析Delphi,Visual Basic,Visual C++,C++ Builder,Intel C++,GCC和Visual Fortran應用程序的性能分析工具包。”我決定嘗試一下,并開始下載免費試用版。在下載過程中,我閱讀了AQtime 3頁面,并看了一個非常令人興奮的交互式教程。最終,我在硬盤上安裝了該軟件,并且可以安裝并使用它。
安裝很容易。幾步,瞧!隨時可用的強大分析器。因此,我認為,讓我們嘗試找出應用程序存在的問題。使用調試信息編譯應用程序后,就可以使用AQtime 3對其進行分析了。
我對AQtime 3的初見讓我有些害羞。我想有很多面板、選項卡和微型窗口,但是其中一定有一些想法。還有!讓開發人員的生活如此輕松的好主意!當然,我必須閱讀一些幫助(“入門”主題)以更好地理解這種哲學,但是很快,我便開始創建我的第一個新項目。
要創建一個項目,只需轉到“文件”菜單并打開一個EXE文件。當然,還有其他選擇,但是我目前不需要它們。如果EXE文件包含調試信息,則AQtime 3會創建一個樹,其中包含已加載的應用程序中使用的所有單元,表單,函數,對象和其他內容。該樹在左側的“設置”選項卡上可用。在右邊有一個“區域”窗口,我們可以在其中定義程序應分析的內容。默認情況下,“完全檢查”處于打開狀態。最好定義自己的區域,以便僅對所需的這些功能進行概要分析,而不對整個應用程序進行概要分析。因此,我關閉了“完全檢查”開關,并創建了一個行級分析區域。
我的問題是我的應用程序源代碼的MainWindow單元中的函數ShowMessagesHistory。因此,我展開了樹,找到了MainWindow單元和我感興趣的函數。我能夠簡單地將函數從樹中拖放到我創建的概要分析區域中,就是這樣。我需要分析該功能的所有內容均已準備就緒。哦,我差點忘了。AQtime 3不僅提供時序分析器,還提供更多功能!但是,目前我對時序分析器很感興趣,因此我從分析器列表中選擇了它。這樣,我什至可以使用與Delphi:F9中相同的快捷方式開始項目的分析運行。
我的應用程序啟動,并且我在UI中執行了一些操作以導致有問題的函數被調用。然后我停止了我的申請以及所看到的……我無話可說來描述我的幸福。在AQtime底部的“編輯器”面板中,顯示了我的源代碼。每行代碼在裝訂線上都有一個百分比值。但這只是呈現結果的一種方法!結果窗口包括以下選項卡:“事件視圖”,“圖形”,“反匯編”,“詳細信息”,“編輯器”和“調用圖形”。這些中的每一個都顯示許多有關概要分析過程的非常有用的信息。這里有每個配置文件例程所花費時間百分比的圖表,這些圖表顯示了函數如何調用其他例程,甚至還有一個反匯編視圖,顯示了配置文件函數的每一行的機器代碼!但最有趣的是“詳細信息”面板和“編輯器”面板。他們提供了很多非常有用的信息。例如,顯示的是分析函數中的所有行號,以及有關每行花費的時間,調用子例程的時間,工作時間百分比甚至點擊次數的圖表的信息,其中提供了有關多少行的信息線路被呼叫的次數。一看這些信息,我就知道大部分時間都在吞噬哪些代碼。
就我而言,問題不在于函數本身,而在于從其調用的某些子例程中。因此,我轉到了“設置”選項卡,并在應用程序樹中找到了耗時的功能。我將它們添加到配置文件區域,并再次執行配置文件運行。現在,我詳細檢查了第二個功能中花費最多的時間。了解線路被調用了多少次也非常有幫助。我很容易注意到一條耗時的行:“僅在兩次調用ShowMessagesHistory函數的情況下,“if FileExists(afilename)then”被調用了500次以上。最有趣的是,這條線對功能流程并不重要。我在Delphi代碼中進行了必要的修改,然后再次編譯了我的應用程序。我啟動了它,進行了概要分析,新報告令人印象深刻。我的功能運行速度提高了10%!我花了很多時間分析其他行。它不僅使我的應用程序更有效,而且給了我很多樂趣。
AQtime 3改變了我測試應用程序性能的方式。回顧過去,我必須承認我花了太多時間進行許多不同的測試,并以某種史前的方式對應用程序進行性能分析。 AQtime 3不僅使我的生活更輕松,而且還節省了我的時間,并且首先在應用程序性能分析中提供了令人難以置信的結果。我已經成為Delphi開發人員超過7年了,在我的歷史中也沒有很多類似的時刻可以稱為“革命性”,但是遇到AQtime 3的那一天絕對是其中之一!
Rafal Platek Cream軟件
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: