色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CPU資源消耗的原因和解決方案

Dbwd_Imgtec ? 來源:未知 ? 作者:胡薇 ? 2018-05-16 17:48 ? 次閱讀

CPU資源消耗的原因和解決方案

對象創建

*輕量對象代替重量對象

* 不需要響應觸摸事件的控件:CALayer顯示

* 對象不涉及UI操作,則盡量放到后臺線程創建

* 包含有CALayer的控件只能在主線程創建和操作

* 通過Storyboard 創建視圖對象時,其資源消耗會比直接通過代碼創建對象要大非常多,在性能敏感的界面里,storyboard不是一個好的技術選擇

* 盡量推遲對象創建的時間,并把對象的創建分散到多個任務中去。

* 對象的復用代價比釋放,創建新對象要小,這類對象應當盡量放到一個緩存池里復用

對象調整

* CALayer:CALayer內部并沒有屬性,當調用屬性方法時,它內部是通過運行時resolveInstanceMethod為對象臨時添加一個方法,并把對應屬性值保存到內部的一個Dictionary里,同時還會通知delegate,創建動畫等等,非常消耗資源。

* UIView的關于顯示相關的屬性(frame/bound/transform)等實際上都是CALayer屬性映射來的,所以對UIView的這些屬性進行調整時,消耗的資源要遠大于一般的屬性,所以,盡量減少不必要的屬性修改

* 當視圖層次調整時,UIView,CALayer之間會出現很多方法調用與通知,所以,應盡量避免調整視圖層次,添加和移除視圖。

對象銷毀

把對象捕獲到block中,然后扔到后臺隊列去隨便發送個消息以避免編譯器警告,就可以讓對象在后臺線程銷毀了。

布局計算

* 視圖布局的計算是App中最為常見的消耗CPU資源的地方

* 在后臺線程提前計算好視圖布局,并且對視圖布局進行緩存

* 用任何技術對視圖進行布局,最終都會落到對UIView.frame/bounds/center等屬性的調整上 對象調整:非常消耗資源,所以盡量提前計算好布局,在需要時一次性調整好對應屬性,而不要多次,頻繁的計算和調整這些屬性。

Autolayout

不手動調整frame 等屬性,可以用常見的快捷屬性:left/right/top/bottom/width/height,或使用ComponentKit,AsyncDisplayKit等框架

文本渲染

* 所有的文本內容控件,在底層都是通過CoreText排版,繪制為Bitmap顯示的。

* 常見的文本控件(UILabel,UITextView),其排版和繪制都是在主線程進行的,當顯示大量文本時,CPU的壓力會非常大。

* 解決方案:自定義文本控件,用TextKit或底層的CoreText對文本異步繪制

* CoreText對象創建好后,能直接獲取文本的寬高信息,避免了多次計算(調整UILabel大小時算一遍,UILabel繪制時內部再算一遍),CoreText對象占用內存較少,可以緩存下來供稍后多次渲染。

圖片的解碼

* 用UIImage 或CGImageSource創建圖片時,圖片數據不會立刻解碼。圖片設置到UIImageView或者CALayer.contents中去,并且CALayer被提交到GPU前,CGImage中的數據才會得到解碼。 _發生在主線程,不可避免。

* 后臺線程先把圖片會知道CGBitmapContext中,然后從Bitmap直接創建圖片。

圖像的繪制

* 圖像繪制:以CG開頭的方法把圖像繪制到畫布中,然后從畫布創建圖片并顯示 如:[UIView drawRect:]

* CoreGraphic 方法通常是線程安全的,圖像的繪制可以放到后臺線程進行

GPU 資源消耗原因和解決方案

GPU:接收提交的紋理和頂點描述(三角形),應用變換(transform),混合并渲染,然后輸出到屏幕上。

所看到的內容:紋理和形狀(三角形模擬的矢量圖形)

紋理的渲染

* 所有的Bitmap ,包括圖片,文本,柵格化的內容,最終都要由內存提交到顯存,綁定為GPU Texture.

* 提交到顯存的過程,GPU調整和渲染Texture的過程,都要消耗不少GPU資源

* 當在較短時間顯示大量圖片(TableView存在非常多的圖片并且快速滑動時),CPU占有率很低,GPU占有非常高,界面仍然會掉幀。

* 盡量減少在短時間內大量圖片的顯示,盡可能將多張圖片合成為一張進行顯示。

* 圖片過大,超過GPU的最大紋理尺寸時,圖片需要先由CPU進行預處理,這對CPU和GPU都會帶來額外的資源消耗。iPhone4S以上機型,紋理尺寸上限4096*4096

視圖的混合

* 當多個視圖(CALayer)重疊在一起顯示時,GPU會首先把他們混合到一起。如果視圖結構過于復雜,混合的過程也會消耗很多GPU資源。

* 應用應當盡量減少視圖數量和層次,并在不透明的視圖里標明opaque屬性以避免無用的Alpha通道合成。

* 把多個視圖預先渲染為一張圖片來顯示。

圖形的生成

* CALayer的border,圓角,陰影,遮罩(mask),CASharpLayer的矢量圖形顯示,通常會觸發離屏渲染(offscreen rendering),而離屏渲染通暢發生在GPU中。

* 當一個列表視圖中出現大量圓角的CALayer,并且快速滑動時,可以觀察到GPU資源已經占滿,而CPU資源消耗很少。界面仍然能正?;瑒?,但平均幀數會降到很低

* 避免這種情況,可以嘗試開啟CALayer.shouldRasterize(柵格化)屬性,但這會把原本離屏渲染的操作轉嫁到CPU上去。

* 圓角圖片遮擋

* 把需要顯示的圖形在后臺線程繪制為圖片,避免使用圓角,陰影,遮罩等屬性。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10854

    瀏覽量

    211589

原文標題:iOS構建流暢的交互界面—CPU,GPU資源消耗的原因和解決方案

文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    2009最新LED路燈技術設計和解決方案

    2009年11月19-20日,OFweek光電新聞網,LEDWeekly將舉辦“2009最新LED路燈技術設計和解決方案”系列在線研討會。歡迎朋友們參加, 詳細情況看這里~: http://webinar.ofweek.com/index.action?user.id=2 有興趣的朋友可以來參加! 
    發表于 11-08 23:57

    儀表放大器--常見的應用問題和解決方案

    儀表放大器--常見的應用問題和解決方案很完整的資料!
    發表于 12-15 09:53

    無線傳感器網絡的挑戰和解決方案

    無線傳感器網絡的挑戰和解決方案
    發表于 09-17 06:53

    求一種TI PFC+LLC解決方案

    的網絡資源下圖所示為常見的工業電源拓撲:PFC LLC的明星產品和解決方案:下圖所示為PFC控制器的產品線推薦:UCC28180是一個8pin芯片,易于使用。UCC28070是一...
    發表于 12-28 08:04

    ADI鋰電池測試設備和解決方案

    ADI鋰電池測試設備和解決方案
    發表于 09-08 16:23 ?15次下載
    ADI鋰電池測試設備<b class='flag-5'>和解決方案</b>

    PFC+LLC的產品和解決方案分析

    PFC LLC英雄產品和解決方案
    的頭像 發表于 05-29 09:05 ?1.1w次閱讀
    PFC+LLC的產品<b class='flag-5'>和解決方案</b>分析

    熱失控的產生原因和解決方案

    熱失控對電子設備的威脅日益加劇,原因在于電子設備中越來越大的功率被壓縮于愈加緊湊的空間 當中;傳統方法無法妥善應對這種威脅。SMD溫度保險絲提供了一種解決方案,可實現260°C回流 焊,又能在達到210°C時熔斷。
    的頭像 發表于 09-14 12:17 ?1.1w次閱讀
    熱失控的產生<b class='flag-5'>原因</b><b class='flag-5'>和解決方案</b>

    Java:調用window的matlab遇到的問題和解決方案

    Java:調用window的matlab遇到的問題和解決方案
    的頭像 發表于 06-20 09:32 ?3334次閱讀
    Java:調用window的matlab遇到的問題<b class='flag-5'>和解決方案</b>

    CPU提供了哪些資源,如何評估CPU資源消耗

    上面的圖和文字摘自ETSI GS NFV-TST 008,呈現的是一個物理CPU注1能夠被測量的幾個資源維度和他們之間的對應關系。
    的頭像 發表于 01-22 09:09 ?1w次閱讀
    <b class='flag-5'>CPU</b>提供了哪些<b class='flag-5'>資源</b>,如何評估<b class='flag-5'>CPU</b><b class='flag-5'>資源</b>的<b class='flag-5'>消耗</b>

    無線傳感器網絡的挑戰和解決方案

    無線傳感器網絡的挑戰和解決方案
    發表于 03-19 04:28 ?4次下載
    無線傳感器網絡的挑戰<b class='flag-5'>和解決方案</b>

    AN-1429: 手機中耳機驅動的設計考慮和解決方案

    AN-1429: 手機中耳機驅動的設計考慮和解決方案
    發表于 03-20 13:06 ?7次下載
    AN-1429: 手機中耳機驅動的設計考慮<b class='flag-5'>和解決方案</b>

    無線傳感器網絡的挑戰和解決方案

    無線傳感器網絡的挑戰和解決方案
    發表于 03-21 13:41 ?1次下載
    無線傳感器網絡的挑戰<b class='flag-5'>和解決方案</b>

    高可靠性組件和解決方案

    高可靠性組件和解決方案
    發表于 04-26 14:38 ?6次下載
    高可靠性組件<b class='flag-5'>和解決方案</b>

    PCB金手指設計的常見問題和解決方案

    PCB金手指設計的常見問題和解決方案
    的頭像 發表于 12-25 10:09 ?2300次閱讀

    高校電能消耗管理存在的問題和解決方案

    摘要: 2013年1月,住建部發布《綠色建筑行動方案》(國辦發「2013」1號)。要求學校、醫院等大型公共建筑全面執行綠色建筑標準。安全耐久、生活便利不再是綠色建筑的評價唯一指標,資源節約、環境宜居
    的頭像 發表于 07-02 10:17 ?542次閱讀
    高校電能<b class='flag-5'>消耗</b>管理存在的問題<b class='flag-5'>和解決方案</b>
    主站蜘蛛池模板: 飘雪韩国在线观看免费高清完整版| 亚洲、国产综合视频| 亚洲精品国产自在现线最新| chinese极品嫩模videos| 国产主播福利一区二区| 日本久久久久久久做爰片日本| 一受多攻高h| 国产精品黄色大片| 欧美成a人片免费看久久| 亚洲视频中文字幕在线观看| 成人在线视频播放| 麻豆成人AV久久无码精品| 亚洲国产成人精品无码区99| 电影日本妻子| 欧美成人精品高清在线观看| 伊人久久免费| 好男人免费观看在线高清WWW| 色婷婷AV99XX| WWW婷婷AV久久久影片| 快播最新电影网站| 亚洲偷自拍精品视频在线观看| 国产 亚洲 日韩 欧美 在线观看| 内地同志男16china16| 在线不卡中文字幕| 国自精品三七区| 无毒成人社区| 日本邪恶全彩工囗囗番海贼王| 中国欧美日韩一区二区三区| 国产自拍视频在线一区| 受被三个攻各种道具PLAY| 柏木舞子在线| 欧美videos人牛交| 9277在线观看免费高清完整版| 久久精品电影| 亚洲综合AV在线在线播放| 国内免费视频成人精品| 喜马拉雅听书免费版| 国产69精品久久久久乱码免费| 欧美伦理片第7页| 99热国产这里只有精品9九| 麻豆国产自制在线观看|