本發(fā)明涉及分組,尤其是剖析圖數(shù)據(jù)的邏輯分組。
背景技術:剖析使得對程序行為的檢查能夠聚焦性能調整。剖析器是根據(jù)在程序執(zhí)行期間收集的信息來生成程序剖析圖的自動化工具。剖析圖捕捉程序的行為特性。可從剖析圖標識程序的一個或多個部分作為優(yōu)化的候選項。例如,剖析圖可以指示在執(zhí)行特定的函數(shù)上花費了過量的時間。換言之,剖析圖有助于理解程序行為,以允許集中優(yōu)化努力。剖析圖通常基于它們的收集數(shù)據(jù)方法等來分類。存在兩種不同類型的收集剖析圖數(shù)據(jù)的方法,即檢測(instrumentation)和采樣。在檢測方法中,向程序添加在執(zhí)行期間收集信息的代碼。此處,被添加的代碼是在程序執(zhí)行時測量程序行為的工具。例如,可測量函數(shù)調用的頻率和持續(xù)時間。在采樣方法中,使用操作系統(tǒng)功能周期性地停止正在執(zhí)行的程序,并對該程序采樣以確定執(zhí)行的當前狀態(tài)。因此,可以注意到,例如程序花費20%的時間執(zhí)行特定的代碼點。因此,采樣方法提供統(tǒng)計近似,而非確切的數(shù)據(jù)。剖析圖數(shù)據(jù)通常被呈現(xiàn)為分解程序執(zhí)行的調用樹(也稱為調用圖)。例如,調用樹可示出在程序中被遍歷的函數(shù)執(zhí)行路徑。調用樹的根節(jié)點可指向程序的入口點,并且樹中的每個其他節(jié)點可標識被調用的函數(shù)以及性能數(shù)據(jù),諸如被調用函數(shù)的執(zhí)行時間。節(jié)點之間的邊可表示函數(shù)調用,并且圈可指示遞歸調用。調用樹可由開發(fā)者來分析,以標識程序熱點,諸如占用一大部分執(zhí)行時間的函數(shù)等。
技術實現(xiàn)要素:下面呈現(xiàn)了簡化的發(fā)明內(nèi)容,以便提供對所公開主題的某些方面的基本概念。本發(fā)明內(nèi)容不是廣泛性的概觀。它并不旨在標識關鍵/重要元素,也不旨在 劃定所要求保護主題的范圍。其唯一目的是以簡化形式呈現(xiàn)一些概念,作為稍后呈現(xiàn)的更具體實施例的序言。簡言之,本發(fā)明涉及剖析圖數(shù)據(jù)的邏輯分組。根據(jù)組織方案將剖析圖數(shù)據(jù)歸屬到組,該組織方案定義組以及組之間的關系。組可以是剖析圖數(shù)據(jù)的對程序分析有意義的抽象。換言之,組可傳遞關于程序或其子系統(tǒng)的高級函數(shù)(例如,打開文檔、重新計算布局、呈現(xiàn)窗口...)的信息等。也可說明上下文切換,使得剖析圖數(shù)據(jù)相對于例如執(zhí)行時間和中央處理器單元(CPU)利用來說是精確的。另外,已分組的數(shù)據(jù)可被查詢并通過各種方式被可視化來進一步方便程序分析。為實現(xiàn)上述及相關目的,在此結合以下描述和附圖描述了所要求保護主題的某些說明性方面。這些方面指示可實踐本主題的各種方式,它們均落在所要求保護主題的范圍之內(nèi)。當結合附圖閱讀以下詳細描述時,本發(fā)明的其他優(yōu)點和新穎特征將變得顯而易見。附圖說明圖1是程序剖析系統(tǒng)的框圖。圖2是程序剖析系統(tǒng)的框圖。圖3是代表性數(shù)據(jù)收集組件的框圖。圖4示出用于開始/停止事件對的數(shù)據(jù)收集。圖5示出用于棧樣本的數(shù)據(jù)收集。圖6是剖析圖數(shù)據(jù)的表可視化的示例性屏幕截圖。圖7是剖析圖數(shù)據(jù)的圖可視化的示例性屏幕截圖。圖8是程序剖析方法的流程圖。圖9是分組剖析數(shù)據(jù)方法的流程圖。圖10是示出用于本公開各方面的合適操作環(huán)境的示意性框圖。具體實施方式剖析圖數(shù)據(jù)通常過于繁多且小粒度的,以至于無法用于標識和解決編程問題。作為示例,典型的應用包括(具有不同可讀性的名稱的)數(shù)千個函數(shù),并 且一秒鐘內(nèi)可調用成百上千個函數(shù)。由于剖析數(shù)據(jù)可與機器和操作系統(tǒng)細節(jié)緊密地相關聯(lián),因此模糊性也可能是一個問題。此外,現(xiàn)代的硬件和操作系統(tǒng)引入了跨中央處理單元(CPU)和線程管理數(shù)據(jù)的新的復雜度。鑒于以上內(nèi)容,難于理解特定的函數(shù)是否例如正在消耗不合理的時間量,因為它只能與全部其它函數(shù)相比,或與它引發(fā)的執(zhí)行相比。稍后的此分析將函數(shù)引發(fā)的全部調用作為相同調用來對待。即,無法區(qū)分例如不受開發(fā)者控制的調用(諸如支持的操作系統(tǒng)、運行時、應用框架或庫)以及受開發(fā)者控制的調用。該信息在進行修改方面是有價值的,記住開發(fā)者不能影響代碼所依賴的代碼的實際實現(xiàn)。常規(guī)的調用樹視圖通過創(chuàng)建聚合視圖,來解決多個不同的剖析數(shù)據(jù)片段的問題。然而,調用樹視圖也可能是有問題的。作為示例而非限制,代碼可輕松地發(fā)起異步操作,該異步操作在被剖析時與發(fā)起它的代碼沒有明顯的連接。如果這些異步操作是跨許多不同的回調來分布的,則初始化代碼隱含的聚合成本可被遮擋,因為單個回調本身不表現(xiàn)為問題,而只在與其他回調聚合時才表現(xiàn)為問題。因此,已經(jīng)認識到常規(guī)的剖析器可聚合數(shù)據(jù)。然而,這種數(shù)據(jù)僅在被分解成更有意義的片段時才是有用的。例如,異步回調導致的執(zhí)行時間可在被分解成與回調相關聯(lián)的各個事務時被更有用地理解。換言之,相對于理解剖析圖數(shù)據(jù),兩個條件可能是有問題的。第一,剖析數(shù)據(jù)可被分割成多個且不同的片段,其中更粗略的視圖更有用。第二,在更細粒度的視圖有幫助時,可聚合數(shù)據(jù)。例如,考慮與多個事務相關聯(lián)的常見處理程序。此處,分解命中該處理程序和以某種方式組織它們的執(zhí)行成本可能是有幫助的。在另一場景中,特定的操作可使用許多不同的回調。在這種情形中,檢查操作的分布成本可能是有用的。下面的細節(jié)一般地針對剖析圖數(shù)據(jù)的邏輯分組。定義組和組間的關系的任意的組織方案可被覆蓋在剖析圖數(shù)據(jù)上,以允許對已執(zhí)行代碼的結構和意義的高級理解等。更具體地,可基于組織方案將剖析圖數(shù)據(jù)歸屬到一個或多個組,其中組是對分析程序的人類用戶來說有意義的抽象。作為示例,函數(shù)可被裝桶(bucketed)為與窗口布局、呈現(xiàn)或二者相關。接下來,可基于與布局組相關聯(lián)的執(zhí)行時間/計數(shù)來輕松地確定程序正在花費過量的時間來對內(nèi)容(例如 web/文檔內(nèi)容)布局。另外,處理可說明上下文中的變化,其中一個進程被切換到中央處理單元之外,使得例如另一個進程可運行。因此,可在低層以精確的方式來管理數(shù)據(jù),使得當數(shù)據(jù)被向上卷到有意義的組中的高層時,數(shù)據(jù)是準確的。在剖析圖數(shù)據(jù)的收集和處理之后,所得到的已分組數(shù)據(jù)可以按各種方式來分發(fā)、查詢以及可視化,以進一步輔助程序分析?,F(xiàn)在參考附圖更詳細地描述本發(fā)明的各個方面,在全部附圖中用相同的標號來指示相同的或相應的元素。然而應該理解,附圖及其相關詳細描述不旨在將所要求保護的主題限于所公開的具體形式。相反,其意圖是覆蓋落在所要求保護主題的精神和范圍之內(nèi)的所有修改、等價物和替換的方案。首先參考圖1,示出了程序剖析系統(tǒng)100。程序剖析系統(tǒng)100基于對更廣泛系統(tǒng)內(nèi)(例如,程序擁有的、程序的子系統(tǒng)擁有的、依賴組件內(nèi)的子系統(tǒng)擁有的…)代碼和/或其身份等(諸如程序人員)的語義目的的高級理解,允許程序性能的自頂向下的視圖。這可通過處理和分析數(shù)據(jù)收集組件110所收集的剖析圖數(shù)據(jù)來實現(xiàn)。數(shù)據(jù)收集組件110被配置成獲取關于程序112的剖析圖數(shù)據(jù)。剖析圖數(shù)據(jù)可以是與程序的執(zhí)行相關聯(lián)的任何的任意收集和/或計算的數(shù)據(jù)。在一個實例中,這種剖析圖數(shù)據(jù)可與關于特定函數(shù)/操作的執(zhí)行時間相對應。在另一個實例中,剖析圖數(shù)據(jù)可對應于非執(zhí)行時間數(shù)據(jù),包括一個或多個事件的出現(xiàn)或頻率、以及任選的與一個或多個事件的出現(xiàn)相關聯(lián)的有效載荷,其中,事件是正在執(zhí)行的程序已經(jīng)命中代碼中的特定點的信號,并且有效載荷是與命中代碼中的特定點相關聯(lián)的數(shù)據(jù)。作為示例,非執(zhí)行時間剖析圖數(shù)據(jù)可包括所分配的字節(jié)或對象、頁刷新、注冊表讀/寫、所產(chǎn)生的工作者線程、或相關聯(lián)的二進制代碼等。程序(也被稱為計算機程序)112包括計算機編程語言中指定的指令集,該計算機編程語言在由處理器執(zhí)行時執(zhí)行該指令集規(guī)定的動作。數(shù)據(jù)收集組件110可利用包括檢測和采樣的各種技術來從正在執(zhí)行的程序收集剖析圖數(shù)據(jù)。程序112所執(zhí)行的工作可由例如操作系統(tǒng)收集的事件/執(zhí)行探針(例如,來自被檢測的代碼的事件追蹤事件或回調)或棧樣本來捕捉??墒占试S在執(zhí)行時間(例如,中央處理單元利用或活動執(zhí)行中消耗的精確的周期)、堆分配、或可在所生成事件的定制有效載荷中表述的其他任意信息方面的分析的數(shù)據(jù)。數(shù)據(jù)收集組件110可利用檢測和采樣的組合。每種方法收集的數(shù)據(jù)可擴充另一種方法。例如,數(shù)據(jù)可被組合/合并、取平均值、交叉檢查、和/或統(tǒng)計地歸一化等。以此方式,兩種方法的優(yōu)點可被利用,并且缺點可被抵消。作為示例,兩種方法可引起觀察者效應,這意味著觀察程序的動作本身就可影響程序。采樣通常不會引起顯著的觀察者效應,但會帶來不如檢測所收集的那么精確的數(shù)據(jù)。因此,可在適當時向采樣數(shù)據(jù)補充檢測數(shù)據(jù)。針對觀察者效應的額外緩解也可通過創(chuàng)建剖析桶來提供,該剖析桶對與操作系統(tǒng)代碼相關聯(lián)的剖析數(shù)據(jù)進行公開地分組(從而排除其它數(shù)據(jù)),該操作系統(tǒng)代碼在根據(jù)所檢測的代碼的事件生成以及根據(jù)代碼采樣棧的生成期間執(zhí)行。此外,當接收到關于所檢測的探針/事件的棧時,也可啟用輕量檢測方法。假設為所分配的字節(jié)單獨地啟用單個事件(這幾乎不引起觀察者效應)。如果“所分配的字節(jié)”事件與棧相關聯(lián),則可根據(jù)棧指定的裝桶來對所分配的數(shù)據(jù)進行分組。注意,在此示例中,完全不啟用采樣。因此,運行時事件和/或所收集的??捎糜诮M織剖析圖數(shù)據(jù)。分組組件120被配置成根據(jù)組織方案114將利用數(shù)據(jù)收集組件110收集的剖析圖數(shù)據(jù)歸屬到特定的組或桶。換言之,剖析圖數(shù)據(jù)可基于描述性機制被相關和相關聯(lián),該描述性機制定義了組以及組之間的關系。在一個實例中,組可傳遞關于程序或其子系統(tǒng)的高級函數(shù)(例如,打開文檔、重新計算布局、呈現(xiàn)窗口...)的信息。除前述內(nèi)容之外,分組組件120可被配置成基于給定的組織方案114來初始化數(shù)據(jù)結構,并將剖析圖數(shù)據(jù)填充到組中。其他實現(xiàn)也有可能,包括但不限于用組信息來標記剖析數(shù)據(jù)。無論何種情形,分組組件120執(zhí)行的處理結果是被分組的數(shù)據(jù),該數(shù)據(jù)可被容納在本地或遠程可訪問的數(shù)據(jù)存儲140中。組織方案114可例如按照函數(shù)名(例如,二進制文件(例如可執(zhí)行文件)內(nèi)的完整函數(shù)名)定義分組??稍诟概c子的分層關系中表述組。然而,組可通過例如將其定義為兄弟節(jié)點來彼此互斥地構建。組可包括例如作為子節(jié)點的子組,也被稱為類別(category)。然而,注意,除非以其他方式顯式地表示,對術語“一個組”或“多個組”的使用旨在包括子組或類別。函數(shù)可在任意層級與組相關聯(lián),并且可出現(xiàn)在任意數(shù)量的組中。換言之,函數(shù)不限于被歸屬到單個組,而相反可出現(xiàn)在任何粒度級別的多個組中。函數(shù)信息也可用于例如基 于棧樣本和/或所檢測的收集/基于事件的收集來聚合數(shù)據(jù)。例如,二進制文件名和函數(shù)名可用作分組的基礎。這在區(qū)分跨越多個二進制文件的執(zhí)行方面可能是有幫助的。組還定義了不顯式地提供二進制/函數(shù)細節(jié)、但提供所收集的數(shù)據(jù)中可用的事件標識符的事件。這種情況中的二進制/函數(shù)信息可由提出指定事件的代碼位置集合來暗示。在至少某些操作系統(tǒng)中,在生成區(qū)分提出事件的多個代碼位置的事件中,棧將是可用的。此外,注意,此處提供的組分層結構可以獨立于函數(shù)執(zhí)行路徑。這樣的理由有兩個。第一,在被檢測的情形中,棧的概念可被采納用于對數(shù)據(jù)分組,其與實際的執(zhí)行棧完全解耦合。第二,在采樣的情形中,任意唯一的??膳c同一組相關聯(lián)。還可為各個組指定優(yōu)先級,以輔助對數(shù)據(jù)分組。更具體地,優(yōu)先級允許基于最近的棧幀(例如,文字代碼棧、虛擬事件開始/停止對棧)來打破默認的組織規(guī)則。這樣的優(yōu)先級值可相對于所有其他分組來表述,并用于輔助分組/裝桶決策。如果針對用于與存在以保存數(shù)據(jù)的其他候選組相比具有較低指定優(yōu)先級的組考慮數(shù)據(jù),則該數(shù)據(jù)可被歸屬到具有最高顯式或隱式優(yōu)先級的替換組。在分層關系中定義的組可基于該分層結構具有隱式優(yōu)先級。如果例如父“A”包括子“B”,則“B”被認為是比“A”優(yōu)先級高的組。因此,用棧“A::B”收集的數(shù)據(jù)將因此與組“B”相關聯(lián)。然而,如果組“B”被顯式地指定為比組“A”低的優(yōu)先級,則數(shù)據(jù)將被分組到組“A”??砂锤鞣N方式將剖析圖數(shù)據(jù)相關,以許可各種范圍內(nèi)的靈活查詢等。作為示例,剖析數(shù)據(jù)可以跨進程邊界或跨機器而延伸。在一個實例中,剖析圖數(shù)據(jù)可根據(jù)時間戳按時間來分組。在更細粒度的層級,剖析圖數(shù)據(jù)可按中央處理單元或線程來分組。此外,統(tǒng)一活動標識符可用于以有用的方式來跟蹤線程間通信,例如通過跟蹤與多線程事務相關聯(lián)的活動。在一個實例中,組織方案114可被具體為數(shù)據(jù)文件,該數(shù)據(jù)文件可被創(chuàng)作、編輯、在其他進程帶外維護、或獨立于其他進程來維護。此外,組織方案114可被輕松地傳遞。這可允許代碼專家捕捉分析程序(對該程序來說,他們是專家)的剖析圖數(shù)據(jù)的有用模型,并將該模型分發(fā)給非專家的用戶。例如,web瀏覽器的內(nèi)部工作中的專家可生成組織方案,并將該方案分發(fā)給web應用開發(fā)者以輔助性能調整。在一個特定的實現(xiàn)中,組織方案114可用XML(可擴展標記語言)來表述,因此提供了大體上的可讀性。在該實現(xiàn)中,并且如下面進一步描述所采用的,組或子組被稱為標記或標記集合,其中標記指示組,標記集合是指組的集合。此處稍后提供XML中指定的組織方案的示例。方案生成組件130被配置成方便組織方案114的生成。在一個實例中,人類用戶可任選地采用模式匹配或輔助說明的其他過濾機制(例如,正則表達式、使用通配符…),來手動地創(chuàng)作組織方案114。方案生成組件130可例如基于可用信息(包括上下文信息)來允許組的自動或半自動(例如,有用戶輔助的)生成。作為示例而非限制,存儲了與對程序作出的改變有關的信息的源控制歷史可由方案生成組件130來挖掘,并可用于自動地生成組。例如,“代碼所有者”組可被創(chuàng)建,以允許剖析圖數(shù)據(jù)被代碼的團隊或個人所有者分解。這允許用戶輕松地標識有助于性能問題的專家。查詢處理器組件150被配置成允許執(zhí)行針對已分組數(shù)據(jù)的查詢。給定一個查詢,查詢處理器組件150可利用已知或新的機制從數(shù)據(jù)存儲140提取滿足該查詢的結果并將其返回。例如,可視化或診斷工具可采用查詢處理器組件150來獲取數(shù)據(jù)??梢暬M件160被配置成允許將已分組的剖析圖數(shù)據(jù)可視化。剖析圖數(shù)據(jù)可以按任意數(shù)量的方式來呈現(xiàn),而不限于常規(guī)的調用樹。此外,由于在語義有意義的層級對剖析圖數(shù)據(jù)進行分組,因此可視化可利用分組,并進一步輔助人類用戶理解剖析圖數(shù)據(jù)。根據(jù)一個實施例,可視化組件160可生成圖形用戶界面,該圖形用戶界面圖形地描繪已分組的剖析圖數(shù)據(jù)并允許與數(shù)據(jù)交互。例如,可視化組件160或人類用戶可創(chuàng)作針對已分組數(shù)據(jù)的查詢,并根據(jù)查詢返回經(jīng)過濾的結果。此外,可提供允許用戶探索以獲取更詳細的數(shù)據(jù)、以及上卷以在更抽象/更高層查看數(shù)據(jù)的機制。雖然程序剖析系統(tǒng)100包括可視化組件160,但是應當理解,可視化或診斷工具可以在程序剖析系統(tǒng)的外部。在該場景中,交互可通過類似的方式來實現(xiàn),例如通過查詢剖析系統(tǒng)以得到必需的數(shù)據(jù)。此外,注意,可視化組件160在各個方面是可擴展的。例如,可視化組件160最初可支持第一可視化集合。接下來,第二可視化集合可例如經(jīng)由第三方插件或通過對程序剖析系統(tǒng)100的 更新/升級被添加。訂閱組件170提供散布已分組數(shù)據(jù)的附加或替換方式。更具體地,數(shù)據(jù)存儲140中容納的已分組數(shù)據(jù)可根據(jù)發(fā)布/訂閱模型來遞送。訂閱組件170可供應并管理訂閱,并且將已分組數(shù)據(jù)發(fā)布到感興趣的訂閱者。程序剖析系統(tǒng)100不限于程序的實時執(zhí)行,或換言之收集剖析圖數(shù)據(jù)方面的操作。另外,程序剖析系統(tǒng)100可在歷史數(shù)據(jù)方面或在收集后(post-collection)時操作。例如,任意的組織方案可被覆蓋到持久保存的日志上,以允許數(shù)據(jù)在就程序功能和結構而言有意義的層級上被查看。換言之,可通過應用替換的分組來提出針對追蹤數(shù)據(jù)的任意數(shù)量的視圖。如圖1所示,組織方案114可不僅在程序剖析系統(tǒng)100的外部還可在程序112的外部。這有許多益處,包括便攜性以及允許組織方案被輕松地改變等。然而,所公開的主題不限于此。在替換的實施例中,組織方案114可被嵌入到程序112或其版本中,如圖2所示。例如,組織方案可以此方式被編碼,使得信息與諸如檢測事件的一部分的剖析圖數(shù)據(jù)一起來提供。更具體地,組織方案可被編碼到程序函數(shù)名中。另外地或另選地,指示組或子組的串標識符可與程序的函數(shù)或其他部分相關聯(lián),并與事件一起提出。此外,用于生成組織方案114的進程可被編碼到程序112中,而不在程序112中對組織方案114進行編碼。方案生成組件130隨后可基于已編碼的進程(例如在運行時)來自動地生成組織方案114。作為示例,在運行時,任意分組可由二進制名稱來創(chuàng)建,使得在第一二進制文件的執(zhí)行期間收集的全部剖析圖數(shù)據(jù)被歸屬到第一二進制文件,在第二二進制文件被執(zhí)行時收集的全部剖析圖數(shù)據(jù)被歸屬到第二二進制文件。另外,方案生成組件130可被配置成當例如數(shù)據(jù)正被收集時實時地自動地更新組織方案114,或作為在收集日志上動態(tài)地重新生成新視圖的一部分來實時地自動地更新組織方案114。圖3描述了代表性數(shù)據(jù)收集組件110。如前所述,數(shù)據(jù)收集組件110被配置成從程序中獲取剖析數(shù)據(jù),這些數(shù)據(jù)可接下來根據(jù)組織方案被分組。數(shù)據(jù)收集組件110包括樣本組件310和檢測組件320。樣本組件310被配置成例如通過對操作系統(tǒng)作出適當?shù)恼{用并獲取結果,在執(zhí)行期間初始化對程序的采樣。在一個實例中,樣本是在時間的特定時刻收集的棧(或者作為諸如分配事件的 特定代碼操作的結果,或者作為經(jīng)組織的收集進程的一部分,將根據(jù)該收集進程創(chuàng)建代碼執(zhí)行的概要圖)。檢測組件320被配置成接收、檢索或以其他方式獲得或獲取來自程序檢測的數(shù)據(jù)。此處,數(shù)據(jù)可以是探針數(shù)據(jù),實際上例如開始/停止事件對。在一個實例中,采用開始/停止事件以獲取有效載荷。在其他實例中,開始/停止事件可用于劃分有趣的邊界(沒有顯式的有效載荷)??色@取任何所生成的事件的時間戳和調用棧。因此,事件也可被稱為隱式地攜帶那些有效載荷。樣本可被認為是系統(tǒng)用時間戳和當前的調用棧有效載荷強制“代碼正在執(zhí)行”事件。此外,注意,可用活動標識符標記事件,該活動標識符可以跨各種上下文(諸如線程)流動到其他事件中。因此,該數(shù)據(jù)可用于以靈活的方式來使剖析圖數(shù)據(jù)相關。組合組件330被配置成允許以各種方式使用檢測和采樣這兩者。例如,每種方法收集的數(shù)據(jù)可擴充另一種方法。更具體地,數(shù)據(jù)可被組合、用于交叉檢查結果、和/或統(tǒng)計地歸一化等。以此方式,兩種方法的優(yōu)點可被利用,并且缺點可被減輕。作為示例而非限制,可用更精確的檢測數(shù)據(jù)來補充本質上不太精確的樣本數(shù)據(jù)。上下文檢測組件340被配置成檢測上下文切換,或換言之處理上下文中的改變。例如,上下文切換可與共享CPU的多個進程相關地出現(xiàn)。在這樣的多任務環(huán)境中,進程可被中止并且CPU的狀態(tài)可被存儲,使得稍后可從同一點繼續(xù)該進程。換言之,一個進程被切換到中央處理單元以外,使得另一進程可以運行。在一個實例中,上下文切換可被認為是一種特殊類型的事件。一旦檢測到與正被剖析的程序有關的上下文切換,數(shù)據(jù)收集可被掛起直到處理繼續(xù)或所收集的數(shù)據(jù)可被標記,使得程序剖析系統(tǒng)100可區(qū)分與程序相關聯(lián)的數(shù)據(jù)以及不與程序相關聯(lián)的數(shù)據(jù)。以此方式,數(shù)據(jù)可被排除。例如,執(zhí)行時間的函數(shù)調用的持續(xù)時間可排除在執(zhí)行與正被剖析的程序無關的進程上消耗的時間,或者換言之,由于上下文切換與正被剖析的程序有關的不活動的時間段??紤]結合圖4用XML創(chuàng)作的以下組織方案,其中標記標識組。該組織方案涉及數(shù)據(jù)集合(包括三個任意分組(也被稱為標記)“A”、“B”和“C”的多個開始/停止事件對)的檢測方法。圖6示出9毫秒的事件流時間線410,這是僅出于說明目的選擇的粒度級。在該時間線410中,與組/標記“A”相關聯(lián)的事件開始,如“A_活動1_開始”組織方案中所指示的。在執(zhí)行期間并在與標記“A”相關聯(lián)的退出事件之前,與組/標記“B”相關聯(lián)的事件激發(fā),如“B_活動l_開始”表示的。當“A”和“B”在進行中時,與組/標記“C”有關的事件(C_活動1_開始)在3毫秒處出現(xiàn),并且退出事件(C_活動1_開始停止)在4毫秒之前出現(xiàn)。在4毫秒處,上下文切換出現(xiàn),并且這個特定的活動線被掛起。如所指示的,在4、5和6毫秒期間將不對執(zhí)行數(shù)據(jù)進行歸屬。在7毫秒處,標記“B”結束執(zhí)行,并且在8毫秒處,標記“A”結束。在9毫秒處,標記“C”的開始/停止對出現(xiàn)。由于標記“A”和標記“B”都不在進行中,因此該時間單元被添加到標記“C”。因此,存在上下文切換之前的時間420、上下文切換期間的時間430和上下文切換之后的時間440。在時間410期間,1毫秒被歸屬到組/標記“A”、“B”和“C”中的每一個。在時間430期間,沒有時間被歸屬到任何分組。在時間430期間,1毫秒被歸屬到組/標記“A”、“B”和“C”中的每一個。以下是一個類似的場景,除了數(shù)據(jù)收集機制是采樣而非檢測??紤]結合圖5用XML指定的以下組織方案,其中標記標識組,結構定義組之間的分層關系。在此,為棧樣本的分組定義組織方案。如圖5所示,收集了6個棧,在上下文切換之前的時間510期間收集了3個,在對應于上下文切換的時間520期間收集了0個,在上下文切換之后的時間530期間收集了3個。在第一樣本512中,只有函數(shù)“A”正在執(zhí)行。在第二樣本514中,函數(shù)“B”己被函數(shù)“A”調用,得到“A”和“B”的棧(A::B)。如組織方案所定義的,與該代碼棧相關聯(lián)的時間被歸屬到“B”。在第三樣本516中,函數(shù)“C”己被由函數(shù)“A”調用的函數(shù)“B”調用,得到“A”、“B”和“C”的棧。根據(jù)組織方案,該代碼棧的時間被歸屬到“C”。由于上下文切換,沒有在時間520期間收集的樣本。在第四樣本532中,只有函數(shù)“A”和“B”保持運行,得到“A”和“B”的棧(A::B),并且時間被歸屬到“B”。在第五樣本534中,代碼棧只包括函數(shù)“A”,接下來導致時間被歸屬到“A”。隨后,在第六樣本536中,函數(shù)“C”被函數(shù)“D”調用,得到“D”和“C”的棧(D::C)。在這種情況下,“C”是與己定義的組相關聯(lián)的最接近的幀,因此它被添加到組/標記“C”。注意,在檢查分層XML的基礎上可能嚴格假設的情況下,“A”和“B”都不需要位于棧中以便提供這種裝桶。圖5還有助于澄清系統(tǒng)中優(yōu)先級的角色。假設組“C”已被賦予比“A”或“B”低的優(yōu)先級(撤銷在缺少任何其他顯式標記的情況下,由子的優(yōu)先級比父高的事實所建立的隱含優(yōu)先級)。在這種場景中,第三個收集的?!癆::B::C”將實際被歸屬到經(jīng)分析的棧中最高優(yōu)先級的組:組“B”。第六個收集的?!癉::C”將仍被歸屬到組“C”,如上所述。還要注意,諸如之前的組織方案的組織方案可采用與符號/事件名有關的通配符和/或模式匹配。例如,考慮“module=‘*’method=‘malloc’”中使用星號通配符。在此,將跨全部模塊來調用分配例程。作為另一示例,考慮“method=‘ClassOne::*’”。在此情況下,標識“ClassOne”的全部成員。返回到圖3,提供關于如何采用關于分組的檢測和采樣的附加細節(jié)。檢測方法利用多個事件開始/停止對來劃分有意義的邊界并分離剖析圖數(shù)據(jù)。在此場景中,事件是正在執(zhí)行的程序已經(jīng)命中代碼中特定點的信號。在此,存在與開始和停止相關聯(lián)的一對事件。例如,開始事件可指示頁面呈現(xiàn)已經(jīng)開始,并且停止事件可指示頁面呈現(xiàn)已經(jīng)終止。此外,假設存在將包括與事件“B”和事件“C”相關聯(lián)的數(shù)據(jù)的任意組“A”。當事件“B”和事件“C”開始和停止時,居間執(zhí)行時間可被聚合并被歸屬到組“A”。用開始停止對指定的間隔可因此被合并到邏輯組“A”中。換言之,多個事件可用于劃分分組的邊界。此外,注意,事件可與非執(zhí)行時間剖析圖數(shù)據(jù)相關聯(lián),該數(shù)據(jù)包括所分配的字節(jié)或對象、頁刷新、注冊表讀/寫、所產(chǎn)生的線程等。因此,事件可指示例如“X”個字節(jié)被分配。根據(jù)采樣方法,采用經(jīng)采樣的棧和時間戳,而非具有事件開始/停止對??上鄬τ谝粋€或多個特定棧來定義組。換言之,棧的子集被映射到一個或多個邏輯組。在檢測方法中,諸如“C”的事件何時激活是已知的。然而,還存在對應于事件“C”激活的棧。另外,事件“C”可從多個地點被激活,因此可存在許多可被歸屬到組“A”的不同棧。例如,可以指示?!癆::B::C”和?!癤::Y::C”指示事件“C”,并映射到組“A”,但是?!癉::E::C”不會。換言之,檢測指示事件“C”可能已經(jīng)激活的經(jīng)驗代碼條件,并且因此,相關聯(lián)的剖析圖數(shù)據(jù)應被歸屬到邏輯組“A”。有了檢測,有可能精確地確定程序中正在發(fā)生著什么,而采樣是近似。采樣在本質上指示剖析數(shù)據(jù)在程序被檢查時 被歸屬到邏輯組A的特定的時間百分比。當與事件開始/停止對一起工作時,這些對導致邏輯分組,并允許在不查閱棧的情況下歸屬相關聯(lián)的剖析圖數(shù)據(jù)以及聚合居間數(shù)據(jù)點。例如,當諸如呈現(xiàn)的事件開始,字節(jié)被分配,并且接下來呈現(xiàn)事件停止的事件時,所分配的字節(jié)被歸屬到例如組“A”。不需要查閱棧。然而,如果不采用事件開始/停止對,則可存在與所分配的字節(jié)相關聯(lián)的棧。在這種情況下,可以確定或推斷所分配的字節(jié)被歸屬到組“A”。因此,與附加數(shù)據(jù)組合的棧允許系統(tǒng)回頭執(zhí)行同一事件開始/停止對分組。在只采用樣本棧的另一場景中,可采用執(zhí)行時間采樣。在此,能夠被揭示的信息是在邏輯組中執(zhí)行所消耗的近似時間等。換言之,樣本本身是在邏輯上被分組的。應當理解,分組信息無需限于在組織方案中表述的組織剖析圖數(shù)據(jù)的信息。作為示例,考慮數(shù)據(jù)流,該數(shù)據(jù)流將分組開始/停止事件對以及另一感興趣的事件(諸如字節(jié)被分配)交錯進行。在此情形中,分組開始/停止事件對可被用作對字節(jié)分配事件分組的基礎。換言之,所分配的字節(jié)可被歸屬到與事件開始/停止對相關聯(lián)的組。當然,組織方案中表達的棧-分組信息可被利用,并被應用到與例如事件有效載荷相關聯(lián)的回調。圖6和7是與web瀏覽器相關聯(lián)的剖析圖數(shù)據(jù)的可視化的示例性屏幕截圖。此外,可視化可根據(jù)組織方案(諸如附錄A中提供的那個)來產(chǎn)生。在此,組織方案被編碼成XML文檔,其中標記標識組,并且結構定義組之間的分層關系。提供圖6和7以便于澄清和理解本發(fā)明的各方面并且不限制所附權利要求的范圍。本領域技術人員在閱讀本說明書后將認識到在本發(fā)明的精神和范圍內(nèi)存在對已分組剖析圖數(shù)據(jù)進行可視化的各種其他方式。圖6是剖析圖數(shù)據(jù)的表可視化的示例性屏幕截圖。更具體地,屏幕截圖描繪了如組織方案所定義的、詳細的、子系統(tǒng)對中央處理器單元(CPU)的利用分解。表指定了相對于多個行和列的組和子組。被標記為“進程”的列610指定了與單個二進制或可執(zhí)行文件相對應的組的分層結構的根。列615提供線程標識符的分組。對于每個線程標識符,存在三層子組,如由列620、625和630所指示的。例如,列620標識名為“三叉戟”的瀏覽器呈現(xiàn)引擎,它被分解成列625中所示的“布局”和“顯示”等。此外,列625中的“布局”又被分解 成列630中所示的“構建塊”和“構建布局”組等。注釋并聚合每個分組和子組的剖析圖數(shù)據(jù),并在列635、640、645、650、660和665中提供分別對應于開始時間、結束時間、持續(xù)時間、CPU利用的百分比、時間的百分比和計數(shù)的該剖析圖數(shù)據(jù)。根據(jù)該表,傳遞高級的有意義的信息。用戶可從快速一瞥中確定瀏覽器正消耗過多的時間在布局中,并且優(yōu)化努力可因此聚焦在程序處理布局的部分。圖7是示出子系統(tǒng)對CPU的執(zhí)行利用分解的示例性屏幕截圖,如由附錄A中指定的組織方案所定義的。示出了允許對檢測(例如開始/停止對)和采樣(例如棧樣本)的兩個收集機制進行比較的兩個視圖710和750。視圖710和視圖750中的各自包括用圖示意單個中央處理單元隨時間的百分比使用的柱狀圖730和770。此外,每個圖區(qū)分經(jīng)由窗口720和760中的復選框可選擇的組。參考若干組件之間的交互已經(jīng)描述了上述系統(tǒng)、架構、環(huán)境等。應該理解,這樣的系統(tǒng)和組件可以包括其中指定的那些組件或子組件,某些指定的組件或子組件,和/或附加的組件。子組件也可以被實現(xiàn)為在通信上被耦合到其他組件而不是被包括在父組件中的組件。此外,一個或多個組件和/或子組件可以組合成提供聚集功能的單個組件。系統(tǒng)、組件、和/或子組件之間的通信可以根據(jù)推送和/或拉取模型來實現(xiàn)。組件也可以與一個或多個其他組件進行交互,出于簡要考慮在此未具體描述其他組件,但本領域的技術人員均已知。此外,以上公開系統(tǒng)以及以下方法的各個部分可以包括或采用基于人工智能、機器學習或知識或規(guī)則的組件、子組件、進程、裝置、方法或機制(例如,支持向量機、神經(jīng)網(wǎng)絡、專家系統(tǒng)、貝葉斯信任網(wǎng)絡、模糊邏輯、數(shù)據(jù)融合引擎、分類器等)。這樣的組件和其它組件可以自動化其執(zhí)行的某些機制或過程,由此使得系統(tǒng)和方法的各部分更為自適應以及高效及智能。作為示例而非限制,方案生成組件130可使用這樣的機制基于可用信息來推斷組??紤]到以上描述的示例性系統(tǒng),參考圖8和9的流程圖將可以更好地理解根據(jù)所公開的主題實現(xiàn)的方法。盡管為了說明簡潔起見,按照一系列框示出和描述了方法,但是,應該理解和知道,所要求保護的主題不限于框的次序,因為一些框可以按與此處所描繪和描述的不同的次序進行和/或與其他框并發(fā)地進行。此外,并非全部所示出的框都是實現(xiàn)下面所描述的方法所必需的。參考圖8,示出了程序剖析的方法800。在附圖標記810,可獲取剖析圖數(shù)據(jù)。在一個實例中,這種數(shù)據(jù)可經(jīng)由代碼檢測、采樣或這二者來獲取?;蛘?,歷史剖析圖數(shù)據(jù)可從例如日志或其他持久存儲的文件中接收、檢索、或以其他方式獲得或獲取。在標記820,可根據(jù)組織方案將剖析圖數(shù)據(jù)歸屬到組,該組織方案定義組以及組之間的關系。換言之,組織方案可被覆蓋到剖析圖數(shù)據(jù)上。此外,分組可與程序的高級函數(shù)或程序的子系統(tǒng)相關聯(lián),使得組是對程序分析有意義的抽象。作為示例,與第一組函數(shù)相關聯(lián)的執(zhí)行時間和中央處理器利用可被歸屬到組“A”,該函數(shù)負責瀏覽器窗口中內(nèi)容的布局,而與顯示瀏覽器窗口的第二組函數(shù)相關聯(lián)的相同數(shù)據(jù)可被歸屬到組“B”。此外以及根據(jù)一個實施例,與上下文切換相關聯(lián)的剖析圖數(shù)據(jù)被排除。在附圖標記830,可基于所歸屬的組來呈現(xiàn)數(shù)據(jù),以對已分組的數(shù)據(jù)進行可視化并輔助診斷性能問題。換言之,可就其所歸屬的組來呈現(xiàn)剖析圖數(shù)據(jù)。在一個實例中,已分組的數(shù)據(jù)可被容納在數(shù)據(jù)存儲中,該數(shù)據(jù)存儲可被查詢以檢索用于可視化的必需數(shù)據(jù)。此外,可視化可被具體化為圖形用戶界面,該圖形用戶界面可允許人類用戶發(fā)起或修改查詢,并且影響呈現(xiàn)得自這些查詢的數(shù)據(jù)的方式。例如,這些查詢可允許相對于時間線放大或縮小。此外,替換的組織方案可被應用到數(shù)據(jù),以進一步輔助分析。圖9是描繪分組剖析圖數(shù)據(jù)方法的流程圖。在附圖標記910,接收、檢索或以其他方式獲得或獲取組織方案。組織方案可指定組以及組之間的關系。在一個實例中,可任選地利用模式匹配或輔助說明的其他過濾機制(例如正則表達式、使用通配符…),來手動地創(chuàng)作組織方案。另外地或另選地,組織方案可基于上下文或其他可用信息來自動或半自動地生成。在標記920,可基于方案來創(chuàng)建、或實例化數(shù)據(jù)結構。例如,可為每個已定義的組創(chuàng)建結構。在附圖標記930,例如當剖析圖數(shù)據(jù)被接收時,可用該剖析圖數(shù)據(jù)來填充所創(chuàng)建的數(shù)據(jù)結構。以此方式,剖析數(shù)據(jù)可被歸屬到組。接下來,已分組數(shù)據(jù)可被查詢或保存,以供稍后使用。在本文中使用的詞語“示例性”或其各種形式意味著用作示例、實例或說明。在此被描述為“示例性”的任何方面或設計并不一定要被解釋為相比其它方面或設計更優(yōu)選或有利。此外,各示例只是出于清楚和理解的目的來提供的 并且并不意味著以任何方式限制或約束所要求保護主題或本發(fā)明的相關部分??梢岳斫?,本來可呈現(xiàn)不同范圍的多個附加或替換示例,但出于簡明的目的已被省略。此處使用的術語“組件”和“系統(tǒng)”及其各種形式(例如,組件、系統(tǒng)、子系統(tǒng)等)旨在表示與計算機相關的實體,其可以是硬件、硬件和軟件的組合、軟件、或執(zhí)行中的軟件。例如,組件可以是但不限于是,在處理器上運行的進程、處理器、對象、實例、可執(zhí)行程序、執(zhí)行的線程、程序和/或計算機。作為說明,在計算機上運行的應用和計算機都可以是組件。一個或多個組件可以駐留在進程和/或執(zhí)行線程中,并且組件可以位于一個計算機內(nèi)和/或分布在兩個或更多計算機之間。本描述和所附權利要求書中使用的連接詞“或”旨在意味著包括性“或”而非互斥性“或”,除非另有指定或從上下文中清晰可見。換言之,“‘X’或‘Y’”旨在意味著“X”和“Y”的任何包括性排列。例如,如果“‘A’采用‘X’”,“‘A’采用‘Y’”或“‘A’采用‘X’和‘Y’”兩者,則在任何上述情況下都滿足“‘A’采用‘X’或‘Y’”。如此處所使用,術語“推論”或“推斷”通常指的是從經(jīng)由事件和/或數(shù)據(jù)捕捉的一組觀察結果來推理或推斷系統(tǒng)、環(huán)境、和/或用戶的狀態(tài)的過程??梢允褂猛茢鄟順俗R特定上下文或動作,也可以生成例如狀態(tài)上的概率分布。推斷可以是概率性的,即,基于對數(shù)據(jù)和事件的考慮,計算在感興趣狀態(tài)上的概率分布。推斷也可以是指用于從一組事件和/或數(shù)據(jù)構成較高級別的事件的技術。這樣的推斷導致從一組觀察到的事件和/或存儲的事件數(shù)據(jù)構建新的事件或動作,不管事件在時間上是否緊密相關,以及事件和數(shù)據(jù)是來自一個還是多個事件和數(shù)據(jù)源??刹捎酶鞣N分類方案和/或系統(tǒng)(例如,支持向量機、神經(jīng)網(wǎng)絡、專家系統(tǒng)、貝葉斯置信網(wǎng)絡、模糊邏輯、數(shù)據(jù)融合引擎……)來執(zhí)行關于所要求保護主題的自動化和/或推斷的動作。而且,對于在詳細描述或權利要求書中使用術語“包括”、“包含”、“具有”、“含有”或其它形式的變型而言,這樣的術語旨在以類似于術語“包括”的方式體現(xiàn)包含性,如同“包括”在用作權利要求書中的過渡詞時所解釋的那樣。為了為所要求保護主題提供上下文,圖10以及以下討論旨在提供對其中可以實現(xiàn)本主題的各方面的合適環(huán)境的簡要、概括描述。然而,合適的環(huán)境只是示例并且并非旨在對使用范圍或功能提出任何限制。盡管能夠在可以在一臺或多臺計算機上運行的程序的計算機可執(zhí)行指令的一般上下文中描述以上公開的系統(tǒng)和方法,但是,本領域的技術人員將認識到,各方面也可以與其他程序模塊等相結合地實現(xiàn)。一般而言,程序模塊包括執(zhí)行特定任務或實現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件和數(shù)據(jù)結構等。此外,本領域技術人員可以理解,上述系統(tǒng)和方法可用各種計算機系統(tǒng)配置實現(xiàn),包括單處理器、多處理器或多核處理器計算機系統(tǒng)、小型計算設備、大型計算機、以及個人計算機、手持式計算設備(例如,個人數(shù)字助理(PDA)、電話、手表……)、基于微處理器或可編程消費或工業(yè)電子設備等。各方面也可以在其中任務由通過通信網(wǎng)絡鏈接的遠程處理設備執(zhí)行的分布式計算環(huán)境中實現(xiàn)。然而,所要求保護主題的某些方面,如果不是所有方面的話,可以在獨立計算機上實施。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程存儲器存儲設備中的一個或兩者中。參考圖10,示出了示例通用計算機1010或計算設備(例如,臺式機、膝上型計算機、服務器、手持式設備、可編程消費或工業(yè)電子產(chǎn)品、機頂盒、游戲系統(tǒng)……)。計算機1010包括一個或多個處理器1020、存儲器1030、系統(tǒng)總線940、大容量存儲1050、以及一個或多個接口組件1070。系統(tǒng)總線1040與至少上述系統(tǒng)組件通信地耦合。然而,可以理解,在其最簡單的形式中,計算機1010可包括耦合到存儲器1030的一個或多個處理器1020,該一個或多個處理器620執(zhí)行存儲在存儲器1030中的各種計算機可執(zhí)行動作、指令和/或組件。處理器1020可以用通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯器件、分立門或晶體管邏輯、分立硬件組件或被設計為執(zhí)行此處描述的功能的其任意組合來實現(xiàn)。通用處理器可以是微處理器,但在替換方案中,處理器可以是任何處理器、控制器、微控制器、或狀態(tài)機。處理器1020還可被實現(xiàn)為計算設備的組合,例如DSP和微處理器的組合、多個微處理器、多核處理器、結合DSP核的一 個或多個微處理器、或任何其它這種配置。計算機1010可包括各種計算機可讀介質或以其他方式與各種計算機可讀介質交互以便于控制計算機1010來實現(xiàn)所要求保護主題的一個或多個方面。計算機可讀介質可以是能由計算機1010訪問的任何可用介質,并包含易失性和非易失性介質以及可移動和不可移動介質。作為示例而非限制,計算機可讀介質可包括計算機存儲介質和通信介質。計算機存儲介質包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù)這樣的信息的任意方法或技術來實現(xiàn)的易失性和非易失性、可移動和不可移動介質。計算機存儲介質包括,但不限于,存儲器設備(例如,隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)……)、磁存儲設備(例如,硬盤、軟盤、磁帶盒、磁帶……)、光盤(例如,緊致盤(CD)、數(shù)字多功能盤(DVD)……)、以及固態(tài)設備(例如,固態(tài)驅動器(SSD)、閃存驅動器(例如,卡、棒、鍵驅動器……)……)、或者可用于存儲所需信息并且可由計算機1010訪問的任何其他介質。通信介質通常以諸如載波或其他傳輸機制等已調制數(shù)據(jù)信號來體現(xiàn)計算機可讀指令、數(shù)據(jù)結構、程序模塊或其他數(shù)據(jù),并包括任何信息傳送介質。術語“已調制數(shù)據(jù)信號”是指使得以在信號中編碼信息的方式來設定或改變其一個或多個特征的信號。作為示例而非限制,通信介質包括諸如有線網(wǎng)絡或直接線連接之類的有線介質,以及諸如聲學、RF、紅外及其他無線介質之類的無線介質。上述的任意組合也應包含在計算機可讀介質的范圍內(nèi)。存儲器1030和大容量存儲1050是計算機可讀存儲介質的示例。取決于計算設備的確切配置和類型,存儲器1030可以是易失性的(例如RAM)、非易失性的(例如ROM、閃存……)或是兩者的某種組合。作為示例,包括諸如在啟動期間在計算機1010內(nèi)的元件之間傳輸信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)可被存儲在非易失性存儲器中,而易失性存儲器可擔當外部高速緩存存儲器以便于處理器1020的處理等。大容量存儲1050包括相對于存儲器1030用于存儲大量數(shù)據(jù)的可移動/不可移動、易失性/非易失性計算機存儲介質。例如,大容量存儲1050包括但不限于,諸如磁盤或光盤驅動器、軟盤驅動器、閃存存儲器、固態(tài)驅動器、或記 憶棒等一個或多個設備。存儲器1030和大容量存儲1050可包括或其中存儲有操作系統(tǒng)1060、一個或多個應用1062、一個或多個程序模塊1064和數(shù)據(jù)1066。操作系統(tǒng)1060用于控制和分配計算機1010的資源。應用1062包括系統(tǒng)和應用軟件之一或兩者,并且可利用操作系統(tǒng)1060對資源的管理通過存儲在存儲器1030和/或大容量存儲1050中的程序模塊1064和數(shù)據(jù)1066來執(zhí)行一個或多個動作。因此,應用1062可根據(jù)由此提供的邏輯來將通用計算機1010變成專用機器。所要求保護主題的全部或各部分可以使用產(chǎn)生控制計算機以實現(xiàn)所公開功能的軟件、固件、硬件或其任意組合的標準編程和/或工程技術來實現(xiàn)。作為示例而非限制,程序剖析系統(tǒng)100或其一部分可以是應用1062或形成應用1062的一部分,并且包括存儲在存儲器和/或大容量存儲1050中的一個或多個模塊1064和數(shù)據(jù)1066,這些模塊和數(shù)據(jù)的功能可在由一個或多個處理器1020執(zhí)行時可實現(xiàn)。根據(jù)一個特定實施例,處理器1020可與片上系統(tǒng)(SOC)或在單個集成電路基座上包括或換言之集成硬件和軟件的類似架構相對應。此處,處理器1020可包括至少與處理器1020和存儲器1030相似的一個或多個處理器以及存儲器等。常規(guī)處理器包括最少量的硬件和軟件并且廣泛依賴于外部硬件和軟件。作為對比,處理器的SOC實現(xiàn)更強大,因為它將硬件和軟件嵌入其中以能夠用最少的硬件和軟件或不依賴于外部硬件和軟件來啟用特定功能。例如,程序剖析系統(tǒng)100和/或相關聯(lián)的功能可被嵌入到SOC體系結構中的硬件內(nèi)。計算機1010還包括通信地耦合到系統(tǒng)總線1040并便于與計算機1010的交互的一個或多個接口組件1070。作為示例,接口組件1070可以是端口(例如,串行、并行、PCMCIA、USB、火線……)或接口卡(例如,聲音、視頻……)等等。在一個示例實現(xiàn)中,接口組件1070可被具體化為用戶輸入/輸出接口,該用戶輸入/輸出接口使得用戶能夠通過一個或多個輸入設備(例如,諸如鼠標等定點設備、跟蹤球、指示筆、觸摸墊、鍵盤、話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、照相機、其他計算機……)來將命令和信息輸入到計算機1010中。例如,輸入設備可捕捉用戶姿勢或語音命令。在另一示例實現(xiàn)中,接口組件1070可被具體化為輸出外圍接口,該輸出外圍接口向顯示器(例 如,CRT、LCD、等離子……)、揚聲器、打印機和/或其它計算機等提供輸出。此外,接口組件1070可被具體化為網(wǎng)絡接口,該網(wǎng)絡接口使得能夠諸如通過有線或無線通信鏈路與其他計算設備(未示出)通信。以上所已經(jīng)描述的內(nèi)容包括所要求保護主題的各方面的示例。當然,出于描繪所要求保護主題的目的而描述每一個可以想到的組件或方法的組合是不可能的,但本領域內(nèi)的普通技術人員應該認識到,所要求保護主題的許多進一步的組合和排列都是可能的。從而,所公開的主題旨在涵蓋落入所附權利要求書的精神和范圍內(nèi)的所有這樣的變更、修改和變化。