国产精品双马尾后入爆操-色吊丝二区三区中文字幕-亚洲高清中文字幕一区二区-国产一区精品视频一区二区

提升App開(kāi)發(fā)性能的技巧有哪些?

發(fā)布時(shí)間:2021-02-26 19:35:14

作者:微紅科技

閱讀次數(shù):6070

當(dāng)前位置: 微紅科技 - 新聞動(dòng)態(tài) - 提升App開(kāi)發(fā)性能的技巧有哪些?

現(xiàn)在,App日益重視用戶的交互體驗(yàn),了解性能優(yōu)化的方式則可以有效提高用戶體驗(yàn)。閱讀和實(shí)踐下面的性能優(yōu)化技巧,可以幫你改善應(yīng)用的流暢度、渲染時(shí)間和其他方面的性能表現(xiàn)。

360截圖20180314180045034.jpg

對(duì)App進(jìn)行性能優(yōu)化是一份冗雜沉重的工作,這不僅是因?yàn)闃?gòu)建一個(gè)App需要前后端協(xié)作,而且需要多方面的技術(shù)棧:數(shù)據(jù)庫(kù)、后端、前端,需要運(yùn)行在多種平臺(tái):iOS,安卓,Chrome,F(xiàn)irefox,Edge,這太復(fù)雜了!不過(guò),還是有一些歷經(jīng)實(shí)踐的通用方式可以用來(lái)優(yōu)化App的性能。

移動(dòng)應(yīng)用市場(chǎng)用戶爭(zhēng)奪戰(zhàn)日益激烈,原來(lái)做App靠的是拼想法、拼創(chuàng)意、拼是否抓住用戶痛點(diǎn);現(xiàn)在精細(xì)化用戶體驗(yàn)成為了一個(gè)App能否留存用戶的關(guān)鍵問(wèn)題,一旦用戶覺(jué)得體驗(yàn)不暢,馬上就有競(jìng)品App后補(bǔ),如何開(kāi)發(fā)高性能的移動(dòng)應(yīng)用,已成為開(kāi)發(fā)者最為關(guān)心的問(wèn)題之一,對(duì)此,馬海祥特意總結(jié)了以下提升App開(kāi)發(fā)性能的技巧:

1、規(guī)劃好應(yīng)用功能,做好應(yīng)用架構(gòu)評(píng)估

用戶體驗(yàn)開(kāi)始于App開(kāi)發(fā)初始規(guī)劃階段,當(dāng)你夢(mèng)想開(kāi)發(fā)一個(gè)App改變世界之前,先想好App主要解決用戶的哪些真實(shí)需求,提煉出App的核心功能,一個(gè)App并不是功能越豐富越好,核心功能才能為用戶帶來(lái)不可替代的價(jià)值。

想清楚核心功能,才能做好應(yīng)用架構(gòu)評(píng)估,應(yīng)用程序性能不佳可能是因?yàn)榭蓴U(kuò)展性限制、不匹配的技術(shù)選擇、低效的網(wǎng)絡(luò)配置以及UI設(shè)計(jì)不符合移動(dòng)端使用習(xí)慣等因素,清晰完整的App架構(gòu)規(guī)劃有利于構(gòu)建用戶所需的系統(tǒng)功能構(gòu)建(具體可查看馬海祥博客《詳解APP軟件開(kāi)發(fā)過(guò)程中的解構(gòu)和重構(gòu)》的相關(guān)介紹)。

2、良好的編程習(xí)慣

良好的編程習(xí)慣不僅可以使程序代碼易于讀懂和修改,還可以使程序結(jié)構(gòu)合理、清晰。

開(kāi)發(fā)人員可以從程序結(jié)構(gòu)模塊化、命名規(guī)則清晰易懂、注釋方法簡(jiǎn)潔明了,文本格式易讀等方面開(kāi)始養(yǎng)成良好習(xí)慣,讓應(yīng)用開(kāi)發(fā)事半功倍,提高程序的執(zhí)行效率。

3、改善程序啟動(dòng)和響應(yīng)的時(shí)間

為了加快App響應(yīng)速度,我們可以在UI線程上創(chuàng)建足夠的對(duì)象,以便完善公共API功能。

然后將功夫用到后臺(tái)線程上,將費(fèi)時(shí)的操作從主線移動(dòng)到一個(gè)單獨(dú)線程中,緩存從磁盤存儲(chǔ)打開(kāi)和閱讀,客戶端證書(shū)在后臺(tái)加載。

Cookies反序列化和解碼在后臺(tái),通過(guò)這些改變,UI將更快地出現(xiàn)在屏幕上。

360截圖20180314180057618.jpg

4、使用最新版本的軟件開(kāi)發(fā)SDK、API

隨著Android、ios平臺(tái)的不斷發(fā)展,平臺(tái)提供的功能也在不斷更新,一些功能可能被新功能完全替代。

核心API得到修正版(bug fix)和性能改進(jìn),幫助開(kāi)發(fā)者編寫(xiě)出運(yùn)行更穩(wěn)定、響應(yīng)更迅速的應(yīng)用程序。

5、使用SuperWebView,讓App支持動(dòng)態(tài)更新

已經(jīng)上線的App在需要更新新功能時(shí),可以使用APICloud平臺(tái)的SuperWebView功能,基于SuperWebView開(kāi)發(fā)的功能支持動(dòng)態(tài)更新,可以繞過(guò)應(yīng)用商店的審核,用戶無(wú)需重新下載App,就能讓新功能悄無(wú)聲息的更新到用戶手機(jī)上,讓原生App的新功能開(kāi)發(fā)變得更高效。

6、使用Android性能調(diào)優(yōu)利器StrictMode

StrictMode意思為嚴(yán)格模式,是用來(lái)檢測(cè)程序中違例情況的開(kāi)發(fā)者工具,最常用的場(chǎng)景就是檢測(cè)主線程中本地磁盤和網(wǎng)絡(luò)讀寫(xiě)等耗時(shí)的操作。

使用嚴(yán)格模式,系統(tǒng)檢測(cè)出主線程違例的情況會(huì)做出相應(yīng)的反應(yīng),如日志打印,彈出對(duì)話框亦或者崩潰等。換言之,嚴(yán)格模式會(huì)將應(yīng)用的違例細(xì)節(jié)暴露給開(kāi)發(fā)者方便優(yōu)化與改善。

7、使用Hierarchy Viewer工具

Hierarchy Viewer可以幫助調(diào)試應(yīng)用布局,它會(huì)讓你選擇設(shè)備或者模擬器上正在運(yùn)行的進(jìn)程,然后顯示其Layout的樹(shù)型結(jié)構(gòu)。

每個(gè)塊上的交通燈分別代表了它在測(cè)量、布置和繪畫(huà)時(shí)的性能,幫你找出瓶頸部分。

8、優(yōu)化應(yīng)用布局

簡(jiǎn)單的屏幕可以讓?xiě)?yīng)用使用輕松流暢,使用Lint工具可以查看View層級(jí)哪些地方可以優(yōu)化。

它可以幫助你找到不必要的控件嵌套以及縮減布局資源的其他方法,以盡量減少資源的使用。

它讓你可以了解哪些布局控件可能是多余的或不必要的。

控件越少、布局層次越淺,性能就越好(具體可查看馬海祥博客《APP用戶體驗(yàn)開(kāi)發(fā)的10大原則》的相關(guān)介紹)。

360截圖20180314175942451.jpg

9、優(yōu)化應(yīng)用的耗電量

?如果讓用戶發(fā)現(xiàn)你的應(yīng)用很耗電,那就不怪用戶馬上卸載應(yīng)用了,應(yīng)用之所以耗電,是因?yàn)槭褂昧耸謾C(jī)的某種資源,根據(jù)谷歌官方統(tǒng)計(jì),典型的耗電場(chǎng)景有調(diào)用GPS定位、網(wǎng)絡(luò)傳輸、屏幕亮度、CPU頻率、內(nèi)存調(diào)度頻度、wake_locker時(shí)間和次數(shù),如果你的應(yīng)用能優(yōu)化以上幾點(diǎn),就能降低耗電風(fēng)險(xiǎn)。

10、規(guī)劃應(yīng)用的離線體驗(yàn)

當(dāng)用戶無(wú)法連接WiFi或其它網(wǎng)絡(luò)信號(hào)時(shí),用戶使用App時(shí)仍然能夠有極佳的可用性,那一定能給你的App加不少印象分。

在規(guī)劃App應(yīng)用時(shí),應(yīng)該將這一設(shè)計(jì)方法考慮其中,提前規(guī)劃好App在離線狀態(tài)下的運(yùn)營(yíng)模式。

11、按需加載

按需加載資源或者說(shuō)懶加載資源(特別是圖片)對(duì)優(yōu)化Web App的性能有很大幫助,對(duì)于圖片較多的頁(yè)面,使用懶加載通常有以下三點(diǎn)好處:

(1)、減少并發(fā)請(qǐng)求,緩解服務(wù)器壓力,提高加載速度。

(2)、減少瀏覽器的內(nèi)存占用率。

(3)、降低服務(wù)器的負(fù)載。

圖片或其他資源懶加載的方案一般是,在程序啟動(dòng)時(shí)加載首屏資源,在頁(yè)面滾動(dòng)時(shí)持續(xù)加載即將進(jìn)入視口的資源,由于這種方法往往需要與頁(yè)面結(jié)構(gòu)和開(kāi)發(fā)方式相協(xié)調(diào),所以常常使用現(xiàn)有的插件和擴(kuò)展來(lái)實(shí)現(xiàn)惰性加載(具體可查看馬海祥博客《App界面常用的數(shù)據(jù)加載設(shè)計(jì)和技術(shù)》的相關(guān)介紹)。

一個(gè)典型的按需加載實(shí)例就是谷歌的圖片搜索工具,點(diǎn)擊這一鏈接并滾動(dòng)頁(yè)面,打開(kāi)開(kāi)發(fā)者工具注意資源的加載時(shí)間。

360截圖20180314180009017.jpg

12、緩存

緩存常用來(lái)存儲(chǔ)頻繁調(diào)用的數(shù)據(jù),當(dāng)緩存后的數(shù)據(jù)再次被調(diào)用時(shí),就可以由緩存直接提供數(shù)據(jù),提高數(shù)據(jù)的響應(yīng)速度。

通常來(lái)說(shuō),一個(gè)App都是由多個(gè)組件構(gòu)成的,在這些組件中都能發(fā)現(xiàn)緩存的影子,比如動(dòng)態(tài)內(nèi)容服務(wù)器和客戶端之間使用的緩存,通過(guò)減少通用請(qǐng)求降低服務(wù)器負(fù)載,可以改善頁(yè)面的響應(yīng)時(shí)間;比如代碼中的緩存處理,可以優(yōu)化某些通用的腳本訪問(wèn)模式。此外,還有數(shù)據(jù)庫(kù)緩存和長(zhǎng)進(jìn)程緩存等。

簡(jiǎn)而言之,緩存是改善應(yīng)用程序響應(yīng)速度和降低CPU負(fù)載的有效方式,在一個(gè)開(kāi)發(fā)體系中,最難的不是如何使用緩存,而是找出哪里適合使用緩存(具體可查看馬海祥博客《交互設(shè)計(jì)的三大隱形機(jī)制:加載、刷新和緩存》的相關(guān)介紹)。

對(duì)于這一問(wèn)題,我還是建議使用事件分析工具(profiler):找出性能瓶頸,檢測(cè)緩存是否成功,測(cè)試緩存是否容易失效……這些問(wèn)題都需要?dú)v經(jīng)實(shí)踐才能得出有效的結(jié)論。

13、性能剖析

性能剖析是應(yīng)用程序進(jìn)行性能優(yōu)化的重要步驟,在馬海祥看來(lái),盲目地優(yōu)化應(yīng)用程序往往會(huì)降低生產(chǎn)力、產(chǎn)生新的痛點(diǎn)且難以維護(hù),性能剖析的作用就是要找出應(yīng)用程序中潛在的風(fēng)險(xiǎn)區(qū)域。

對(duì)Web應(yīng)用程序來(lái)說(shuō),響應(yīng)速度是一個(gè)非常重要的衡量指標(biāo),所以開(kāi)發(fā)者都會(huì)盡可能地去提高資源的加載速度和頁(yè)面的渲染速度。

此外,鄭州網(wǎng)站建設(shè)如果合理分析內(nèi)存的使用率,也將有效提高應(yīng)用程序的性能,如果你的頁(yè)面中有大量的視覺(jué)元素(比如動(dòng)態(tài)的表格)或者大量的交互元素(比如游戲),那么對(duì)內(nèi)存使用的剖析就可以有效減少卡頓,提高幀速。

找出性能的核心痛點(diǎn),才能讓你更加高效地進(jìn)行性能優(yōu)化。

相對(duì)而言,對(duì)后端進(jìn)行性能剖析稍顯困難,一般而言,從最耗時(shí)的請(qǐng)求入手查找相應(yīng)的服務(wù)器是個(gè)不錯(cuò)的方法,這里并沒(méi)有推薦任何有關(guān)后端的性能剖析工具,這是因?yàn)榫唧w的剖析工具要視具體的后端技術(shù)棧而定(具體可查看馬海祥博客《移動(dòng)設(shè)備Web App開(kāi)發(fā)與調(diào)試的相關(guān)知識(shí)要點(diǎn)》的相關(guān)介紹)。

14、負(fù)載均衡

簡(jiǎn)而言之,負(fù)載均衡類似于一種輪詢方案,基于反向代理服務(wù)器nginx或者成熟的分發(fā)網(wǎng)絡(luò),比如Cloudflare和Amazon CloudFront構(gòu)建。

為了實(shí)現(xiàn)負(fù)載均衡,需要將動(dòng)態(tài)內(nèi)容和靜態(tài)內(nèi)容進(jìn)行分離,便于執(zhí)行并行連接。換言之,串行訪問(wèn)削弱了負(fù)載均衡檢索最佳路徑并進(jìn)行分發(fā)的能力。此外,并行加載資源還可以加快應(yīng)用程序的啟動(dòng)速度。

負(fù)載均衡也可以構(gòu)建的很精細(xì),如果數(shù)據(jù)模型不能夠很好地與最終的一致性算法或緩存保持良好的匹配關(guān)系,那么必將導(dǎo)致諸多問(wèn)題,幸運(yùn)的是,大多數(shù)的應(yīng)用程序所請(qǐng)求的數(shù)據(jù)都是一個(gè)縮減集,該縮減集本身具有較高級(jí)別的一致性,鄭州做網(wǎng)站公司如果你的應(yīng)用程序還沒(méi)有具備這樣的能力,那么你需要考慮重構(gòu)它了。

360截圖20180314180112954.jpg

15、算法

在大多數(shù)情況下,鄭州網(wǎng)站制作選擇更高效的算法可以比局部?jī)?yōu)化獲得更佳的收益。

從某種意義上說(shuō),對(duì)CPU和內(nèi)存進(jìn)行性能剖析有助于幫助開(kāi)發(fā)者找出應(yīng)用程序中較大的性能瓶頸,如果這些瓶頸并不是由代碼的錯(cuò)誤引起的,那很有可能就是算法的問(wèn)題。

分享到 6070

上一篇: 談SEO優(yōu)化理念之主題模型!

下一篇: 談SEO優(yōu)化理念之主題模型!

返回列表

相關(guān)推薦

如何優(yōu)化網(wǎng)頁(yè)提高效率?已解決

什么是理財(cái)軟件?企業(yè)為什么開(kāi)發(fā)理財(cái)軟件?

app如何做好推廣活動(dòng)策劃方案?已解決

如何快速了解網(wǎng)站建設(shè)?

您還可以

留下您的聯(lián)系方式

我們系統(tǒng)架構(gòu)師將在第一時(shí)間與您聯(lián)系

  您的姓名:

  您的電話:
  • 提 交
  • Copyright ? 微紅科技 All Rights Reserved 

    ICP備案 黔公網(wǎng)安備   黔ICP備17001430號(hào)-1   【微紅科技官方微博】 版權(quán)所有:微紅科技     百度統(tǒng)計(jì)

    泽普县| 南部县| 万盛区| 武夷山市| 临漳县| 广东省| 浪卡子县| 长海县| 涟水县| 婺源县| 志丹县| 新竹县| 张家口市| 牙克石市| 廉江市| 保康县| 张家港市| 凌海市| 贡山| 瓮安县| 平潭县| 喀喇沁旗| 行唐县| 石泉县| 宁德市| 攀枝花市| 高安市| 景宁| 赣州市| 望江县| 三亚市| 四平市| 龙海市| 文化| 潞城市| 泰州市| 乡城县| 武强县| 沛县| 永城市| 隆安县|