国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分析Android開(kāi)機(jī)啟動(dòng)速度優(yōu)化(含應(yīng)用程序優(yōu)化)

如意 ? 來(lái)源:CSDN ? 作者:Peter盼 ? 2020-06-20 10:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

眾所周知Android開(kāi)機(jī)啟動(dòng)速度較慢,于是如何加快啟動(dòng)速度便成為一個(gè)值得討論的問(wèn)題。

在查閱過(guò)許多資料后(特別是Google Group的android-platform),我整理總結(jié)出下面幾點(diǎn)基本看法。

Android開(kāi)機(jī)啟動(dòng)耗時(shí)較多的部分有2個(gè),分別是preload classes和scan packages。

這里又?jǐn)?shù)preload classes最為耗時(shí),在我的機(jī)子上一般需要13秒左右。實(shí)際上,在看過(guò)google group眾多關(guān)于preload class的主題后,基本可以確定以下事實(shí):

preloaded-classes list中預(yù)加載的類位于dalvik zygote進(jìn)程的heap中。在zygote衍生一個(gè)新的dalvik進(jìn)程后,新進(jìn)程只需加載heap中沒(méi)有預(yù)加載的類(這些后加載進(jìn)來(lái)的類成為該進(jìn)程所private獨(dú)有的),這樣便加快了應(yīng)用程序的啟動(dòng)速度。實(shí)際上這是一種以空間換時(shí)間的辦法,因?yàn)閹缀鯖](méi)有一個(gè)應(yīng)用程序能夠使用到所有的預(yù)加載類,必定有很多類對(duì)于該應(yīng)用程序來(lái)說(shuō)是冗余的。但是也正如Google所說(shuō),智能手機(jī)開(kāi)機(jī)遠(yuǎn)沒(méi)有啟動(dòng)應(yīng)用程序頻繁——用戶開(kāi)機(jī)一次,但直到下次再開(kāi)機(jī)之前可能要運(yùn)行多個(gè)應(yīng)用程序。因此犧牲一點(diǎn)啟動(dòng)時(shí)間來(lái)?yè)Q取應(yīng)用程序加載時(shí)的較快速度是合算的。

preloaded-classes list已經(jīng)是Google Android工程師使用眾多測(cè)試工具分析,加以手動(dòng)微調(diào)后形成的最優(yōu)化預(yù)加載列表,涵蓋了智能機(jī)上最長(zhǎng)見(jiàn)的應(yīng)用類型所需要的各種類。很難想象我們自己能夠有什么手段能夠獲得比這樣更優(yōu)的一個(gè)預(yù)加載列表。所以,除非你的Android系統(tǒng)是被移植到非智能手機(jī)設(shè)備上使用(例如MID、EBOOK,可以不需要Telephony相關(guān)的類),不建議去“優(yōu)化”preloaded-classes list。

在zygote中單起一個(gè)線程來(lái)做preload,是否可行?答案是否定的。首先在zygote中不可以新開(kāi)線程,其次,就算新開(kāi)一個(gè)線程,在目前智能機(jī)硬件條件下(單核CPU),除非有頻繁大量的存儲(chǔ)IO,否則我們不能看到我們期望加速啟動(dòng)效果。

關(guān)于scan packages的問(wèn)題。同樣參考上面提到的那篇帖子,我們從中可以知道一個(gè)事實(shí):越少的apk安裝,越短的啟動(dòng)時(shí)間。事實(shí)上確實(shí)如此,apk安裝的多少的確影響開(kāi)機(jī)速度,但相比而言,scan packages所花費(fèi)的時(shí)間遠(yuǎn)沒(méi)有preload classe多。似乎這里沒(méi)有多少油水可榨,但起碼我們知道了:盡量減少產(chǎn)品中預(yù)置的apk數(shù)量可以提升啟動(dòng)速度(哪怕精簡(jiǎn)到極致也許只節(jié)省了2s)。

最后,關(guān)于那篇帖子中提到的start services階段,我認(rèn)為雖然此階段確實(shí)需要消耗可觀的時(shí)間,但是正如文中提到的那樣,優(yōu)化這些services其實(shí)就是剔除我們不需要的一些services,而且不僅僅是修改SystemServer.java的問(wèn)題,任何使用到被優(yōu)化剔除掉的服務(wù)的代碼都必須加以修改,否則系統(tǒng)肯定是起不來(lái)的。這樣工作量大,而且難度也不小,并且有一定風(fēng)險(xiǎn)。因此對(duì)這些services的優(yōu)化要慎之又慎。

那么加快啟動(dòng)速度是不是就沒(méi)有辦法了呢?也不是。除了硬件上的改動(dòng),在軟件上使用BLCR技術(shù)也可以解決這個(gè)問(wèn)題。

在此我認(rèn)為同時(shí)有必要提一下應(yīng)用程序啟動(dòng)速度加速的問(wèn)題。用過(guò)Android的都會(huì)發(fā)現(xiàn),第一次啟動(dòng)某個(gè)應(yīng)用程序時(shí)比較慢,但只要不關(guān)機(jī)重啟,大部分情況下以后再次啟動(dòng)就明顯的要快許多。因此我們很容易想到一種辦法,即“預(yù)加載”我們的應(yīng)用程序一次,那么下次用戶再次啟動(dòng)我們時(shí)不就快了嗎?

我們首先明確一點(diǎn):任何“預(yù)加載”的想法都是不切實(shí)際的。先不討論實(shí)施在技術(shù)上的可能性,我們只要看一下Android的Activity生命周期管理就應(yīng)該明白,就算你通過(guò)某種方式“預(yù)加載”了你的某個(gè)Activity,你也不能確保在用戶真正要求開(kāi)始運(yùn)行它的時(shí)候,你所“預(yù)加載”的Activity還存在,因?yàn)锳ndroid很可能在你為“預(yù)加載”第一次啟動(dòng)Activity后的不久就將它gc掉了。依靠一個(gè)不可靠的技術(shù),顯然是不明智的。

那么還有沒(méi)有別的辦法呢?答案是有的,但是只在少數(shù)情況下才有一定意義。在源碼的frameworks/base/core/res/res/values/arrays.xml中,我們可以看到有名為“preloaded_drawables”的項(xiàng),其中列出的是Android在啟動(dòng)時(shí)預(yù)加載的圖形資源,這樣在某個(gè)應(yīng)用程序需要這些圖形資源時(shí)就不必再加載了。如果我們某個(gè)應(yīng)用程序包含大量的圖形資源,那么我們可以將其加入到這個(gè)preloaded_drawables項(xiàng)中以加快我們應(yīng)用程序的啟動(dòng)速度。但是這樣有一個(gè)顯而易見(jiàn)的弊端:同preload classes一樣,不是每個(gè)應(yīng)用程序都需要所有預(yù)加載的圖形資源,這些冗余的資源反而占據(jù)了應(yīng)用程序進(jìn)程的內(nèi)存空間。因此,這種技術(shù)實(shí)際應(yīng)用的局限性較大,僅限于這樣一種情況:某個(gè)設(shè)備只運(yùn)行固定的幾個(gè)應(yīng)用程序,而且這些應(yīng)用程序包含大量的圖形資源需要加載。但這樣會(huì)是一個(gè)什么設(shè)備呢?

好了,到此基本上把我這兩天研究的心得寫(xiě)出來(lái)了。限于認(rèn)識(shí)水平有限,如果文中有誤或者哪位能有更好的想法,歡迎在下面留言:)如果以后我又有心得,會(huì)再更新此文。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    4026

    瀏覽量

    133991
  • 啟動(dòng)速度
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    6661
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    API數(shù)據(jù)分析:淘寶流量來(lái)源分析,渠道優(yōu)化

    ? 在電商領(lǐng)域,流量來(lái)源分析優(yōu)化營(yíng)銷策略的核心。淘寶作為中國(guó)領(lǐng)先的電商平臺(tái),其流量數(shù)據(jù)可通過(guò)API(應(yīng)用程序接口)高效獲取和分析。本技術(shù)帖將逐步指導(dǎo)您如何利用淘寶API進(jìn)行流量來(lái)源
    的頭像 發(fā)表于 01-23 13:42 ?180次閱讀
    API數(shù)據(jù)<b class='flag-5'>分析</b>:淘寶流量來(lái)源<b class='flag-5'>分析</b>,渠道<b class='flag-5'>優(yōu)化</b>!

    LDO性能優(yōu)化的應(yīng)用技巧

    本文圍繞LDO性能優(yōu)化的關(guān)鍵環(huán)節(jié)展開(kāi),系統(tǒng)闡述了從啟動(dòng)過(guò)程控制、不同負(fù)載條件下穩(wěn)定工作到瞬態(tài)響應(yīng)提升的全鏈路應(yīng)用技巧。內(nèi)容涵蓋啟動(dòng)過(guò)沖抑制、電子負(fù)載在CC/CR模式下的適應(yīng)性優(yōu)化
    的頭像 發(fā)表于 01-22 10:24 ?4611次閱讀
    LDO性能<b class='flag-5'>優(yōu)化</b>的應(yīng)用技巧

    單片機(jī)大神的程序優(yōu)化流程

    程序結(jié)構(gòu)優(yōu)化 1、程序的書(shū)寫(xiě)結(jié)構(gòu) 雖然書(shū)寫(xiě)格式并不會(huì)影響生成的代碼質(zhì)量,但是在實(shí)際編寫(xiě)程序時(shí)還是應(yīng)該遵循一定的書(shū)寫(xiě)規(guī)則,一個(gè)書(shū)寫(xiě)清晰、明了的程序
    發(fā)表于 12-25 07:38

    Linux系統(tǒng)冗余設(shè)計(jì)裁剪開(kāi)機(jī)時(shí)間優(yōu)化

    1、在保留現(xiàn)有功能(RT-Linux實(shí)時(shí)特性、SPI驅(qū)動(dòng)正常工作、網(wǎng)口通信正常、USB驅(qū)動(dòng))的前提下,將Upboard開(kāi)發(fā)板的Linux系統(tǒng)開(kāi)機(jī)時(shí)間從當(dāng)前~60秒優(yōu)化至≤20秒(上電啟動(dòng)至系統(tǒng)完全
    發(fā)表于 12-16 22:17

    請(qǐng)問(wèn)Keil的優(yōu)化等級(jí)到底該如何選擇?

    在Keil MDK(Microcontroller Development Kit)中,優(yōu)化等級(jí)是編譯器的核心設(shè)置之一,它直接影響生成代碼的大小、執(zhí)行速度和調(diào)試便利性。選擇合適的優(yōu)化等級(jí)是平衡性
    發(fā)表于 11-20 07:51

    程序運(yùn)行速度很慢如何優(yōu)化

    ;gt;外設(shè),內(nèi)存<->內(nèi)存)交給DMA,釋放CPU資源。 優(yōu)化算法: 選擇時(shí)間復(fù)雜度更低的算法。避免不必要的循環(huán)和重復(fù)計(jì)算。 減少函數(shù)調(diào)用開(kāi)銷: 對(duì)于頻繁調(diào)用的小函數(shù)
    發(fā)表于 11-17 06:12

    蜂鳥(niǎo)E203內(nèi)核優(yōu)化方法

    提高程序的響應(yīng)速度和并行度。 應(yīng)用程序優(yōu)化:針對(duì)具體的應(yīng)用場(chǎng)景,優(yōu)化算法和程序實(shí)現(xiàn),減少資源占用
    發(fā)表于 10-21 07:55

    ElfBoard技術(shù)貼|【RK3588】ELF 2開(kāi)發(fā)板開(kāi)機(jī)啟動(dòng)詳解

    在嵌入式系統(tǒng)開(kāi)發(fā)中,合理管理開(kāi)機(jī)啟動(dòng)項(xiàng)目能夠優(yōu)化系統(tǒng)啟動(dòng)流程,確保關(guān)鍵服務(wù)和應(yīng)用按時(shí)加載運(yùn)行。本文將詳細(xì)介紹在ELF2開(kāi)發(fā)板Linux5.10.209系統(tǒng)下基于SystemVinit
    的頭像 發(fā)表于 06-27 16:20 ?2040次閱讀
    ElfBoard技術(shù)貼|【RK3588】ELF 2開(kāi)發(fā)板<b class='flag-5'>開(kāi)機(jī)</b>自<b class='flag-5'>啟動(dòng)</b>詳解

    鴻蒙5開(kāi)發(fā)寶藏案例分享---冷啟動(dòng)優(yōu)化案例分享

    鴻蒙冷啟動(dòng)優(yōu)化大揭秘!這些官方寶藏案例讓我效率翻倍 ? 大家好呀!最近在優(yōu)化鴻蒙應(yīng)用時(shí),我偶然發(fā)現(xiàn)了官方文檔里隱藏的性能優(yōu)化寶藏案例。這些實(shí)戰(zhàn)經(jīng)驗(yàn)讓我的應(yīng)用
    發(fā)表于 06-12 17:22

    VirtualLab:光柵的優(yōu)化分析

    光柵是光學(xué)工程師使用的最基本的工具。為了設(shè)計(jì)和分析這類組件,快速物理光學(xué)建模和設(shè)計(jì)軟件VirtualLab Fusion為用戶提供了許多有用的工具。其中包括參數(shù)優(yōu)化,以輕松優(yōu)化系統(tǒng),以及參數(shù)運(yùn)行,它
    發(fā)表于 05-23 08:49

    VirtualLab 應(yīng)用:傾斜光柵的參數(shù)優(yōu)化及公差分析

    允許為目標(biāo)值定義參數(shù)約束和權(quán)重值。更多信息請(qǐng)參見(jiàn): 參數(shù)優(yōu)化文檔的介紹 第一級(jí)次的參數(shù)優(yōu)化 **結(jié)果——公差分析 **
    發(fā)表于 05-22 08:52

    HarmonyOS優(yōu)化應(yīng)用內(nèi)存占用問(wèn)題性能優(yōu)化

    應(yīng)用開(kāi)發(fā)過(guò)程中注重內(nèi)存管理,積極采取措施來(lái)減少內(nèi)存占用,以優(yōu)化應(yīng)用程序的性能和用戶體驗(yàn)。 HarmonyOS提供了一些內(nèi)存管理的工具和接口,幫助開(kāi)發(fā)者有效地管理內(nèi)存資源: onMemoryLevel接口
    發(fā)表于 05-21 11:27

    HarmonyOS優(yōu)化應(yīng)用包體積大小問(wèn)題性能優(yōu)化

    大小之前,需要先了解HarmonyOS應(yīng)用的應(yīng)用程序包結(jié)構(gòu)。在進(jìn)行應(yīng)用程序包大小優(yōu)化分析時(shí),可以使用掃描工具掃描分析App包,根據(jù)輸出的檢測(cè)報(bào)告,采取相應(yīng)措施
    發(fā)表于 05-20 14:50

    系統(tǒng)啟動(dòng)時(shí)間優(yōu)化方案--基于米爾MYD-YG2LX開(kāi)發(fā)板

    的整體表現(xiàn)。然而,如果驅(qū)動(dòng)程序的行為不良,例如出現(xiàn)崩潰、卡頓或沖突等問(wèn)題,那么進(jìn)行優(yōu)化就會(huì)變得更加棘手和挑戰(zhàn)。這需要深入分析和修復(fù)驅(qū)動(dòng)程序的問(wèn)題,調(diào)整其代碼和算法,以使其更加高效和可靠
    發(fā)表于 05-09 18:03

    基于RV1126開(kāi)發(fā)板設(shè)置應(yīng)用開(kāi)機(jī)啟動(dòng)

    用戶根據(jù)對(duì)自身項(xiàng)目程序的管理需求,進(jìn)行自帶或者自定義應(yīng)用開(kāi)機(jī)啟動(dòng)的創(chuàng)建與編輯。
    的頭像 發(fā)表于 04-17 13:49 ?1154次閱讀
    基于RV1126開(kāi)發(fā)板設(shè)置應(yīng)用<b class='flag-5'>開(kāi)機(jī)</b>自<b class='flag-5'>啟動(dòng)</b>