Flutter的宣傳說,使用Flutter能夠達到60FPS,可是這並不意味,無論你怎麼寫,都能達到60FPS,若是有耗時的操做,可能會阻塞UI的渲染,若是內存使用過多,也有可能會OOM,因此性能的好壞,是保證Flutter可否達到60FPS的關鍵,在對Flutter進行性能優化以前,咱們先看下如何來監測Flutter的性能。性能優化
Flutter有三種構建模式,適用於不一樣的場景,想要對性能監控,都跑在Profile模式下:bash
顧名思義,就是調試模式,在調試模式下:app
能夠看到,在Debug模式下,爲了debug和快速開發,犧牲了性能,因此Debug模式都是用在開發階段。 並且模擬器只能運行Debug模式。工具
用命令行:性能
$flutter run
複製代碼
顧名思義,就是要發佈了,在Release模式下,要追求最高的性能和最小的安裝包,因此會:gradle
因此,Release模式是APP要發佈的時候才用。優化
Release模式只能跑在真機上。ui
用命令行:lua
$flutter run --release
複製代碼
或者spa
$flutter build
複製代碼
Profile是專門監控性能的模式,在Debug模式下,不能實際反應應用的性能,而在Release模式下,卻沒有監控的功能,因此就誕生了Profile模式,Profile模式和Release模式更接近,Profile和Release都採用的AOT編譯,因此都不能用Hot Reload,可是Profile相對於Release,多了以下的功能:
Profile模式只能跑在真機上。
用命令行:
$flutter run --profile
複製代碼
Observatory是用於分析和調試Dart代碼的工具,由於Flutter自帶Dart VM,因此也能夠用Observatory。
Debug下啓用Observatory:
$flutter run
複製代碼
Profile下啓用Observatory:
$flutter run --profile
複製代碼
運行完命令後,會看到以下的信息:
$ flutter run --profile
Initializing gradle... 0.8s
Resolving dependencies... 6.6s
Launching lib/main.dart on ALP AL00 in profile mode...
Gradle task 'assembleProfile'...
Gradle task 'assembleProfile'... Done 21.2s
Built build/app/outputs/apk/profile/app-profile.apk (66.5MB).
Installing build/app/outputs/apk/app.apk... 5.4s
D/mali_winsys(18612): EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
An Observatory debugger and profiler on ALP AL00 is available at http://127.0.0.1:57535/
For a more detailed help message, press "h". To quit, press "q".
複製代碼
這一句:
available at http://127.0.0.1:57535/
複製代碼
打開http://127.0.0.1:57535/
這個網址,就會看到以下的界面:
Observatory支持以下的功能:
部分功能的截圖以下:
Flutter Inspector是一個強大的工具,要想使用Flutter Inspector,就得先運行Flutter APP。
運行Flutter APP後:
選擇 View > Tool Windows > Flutter Inspector,就能夠打開Flutter Inspector,能夠看到有不少功能,以下圖:
而後選擇Open observatory。
經過 View > Command Palette 或者 cmd+p
打開命令板,輸入「Open observatory」 而後選擇 Open observatory就行。
若是看不到,說明你沒有運行Flutter APP,得以Start Debugging
的方式運行。