背景
實(shí)驗(yàn)用 Java3d 做樹(shù)木建模伍绳,其中一個(gè)重要過(guò)程是從三維點(diǎn)云中提取出樹(shù)木骨架,這里的骨架提取算法包括且不限于八叉樹(shù)降采樣、k近鄰提取鄰居圖踩叭、Dijkstra計(jì)算最短路徑、提取圖聯(lián)通分量翠胰、k-means 聚類(lèi)容贝、目標(biāo)函數(shù)最優(yōu)化、三次曲線插值等過(guò)程之景。
用一套算法組成的 pipeline 來(lái)實(shí)現(xiàn)骨架提取斤富,時(shí)間開(kāi)銷(xiāo)還是一個(gè)比較重要的評(píng)估因素的。
所以要做 Profile锻狗,一個(gè)土辦法是满力,在幾個(gè)關(guān)鍵方法入口和出口記錄時(shí)間戳,兩個(gè)時(shí)間戳一減得到這個(gè)方法的時(shí)間開(kāi)銷(xiāo)轻纪。一開(kāi)始我就是這么干的:
換更高效的工具
還是換個(gè)更高效的工具吧油额,我發(fā)現(xiàn) IntelliJ IDEA 居然默認(rèn)不提供 Profiler,去搜索了一下刻帚,有人提到 VisualVM悔耘,于是下載了這個(gè)插件。后來(lái)發(fā)現(xiàn)這個(gè)插件本身不是 Profiler我擂,我得去官網(wǎng)下載這個(gè)工具衬以。
用法
其實(shí),壓根不需要下載 IntelliJ IDEA 的 VisualVM 插件校摩,沒(méi)什么卵用看峻。直接下載 visualvm_141.zip,打開(kāi) ./bin/visualvm.exe衙吩。
- 打開(kāi)后顯示出了當(dāng)前 JRE 下面所有在跑的 Java 應(yīng)用互妓。
- 運(yùn)行要 Profile 的 Java 應(yīng)用。
- 打開(kāi) Profiler 頁(yè)面坤塞,先點(diǎn) CPU冯勉,再點(diǎn) Stop,兩次點(diǎn)擊之間就在做 Profile 了摹芙。下面的結(jié)果就出來(lái)了灼狰。
但是還是要注意一下,右邊的紅框框里面的類(lèi)才會(huì)被 Profile浮禾。
另外就是交胚,啟動(dòng) Java 應(yīng)用后份汗,Java 應(yīng)用不會(huì)留給我時(shí)間去點(diǎn)那個(gè) CPU 按鈕,所以我干脆在 main() 函數(shù)的第一行加了一句
new Scanner(System.in).nextLine();
這樣我點(diǎn)擊了 CPU 按鈕后蝴簇,再去命令行敲一下回車(chē)杯活,程序再跑起來(lái)。這種方法也是很土的熬词,不過(guò)還挺好用旁钧。