精品国产在线亚洲欧美-精品国产在线手机在线-精品国产在线国语视频-精品国产在线观看福利-亚洲色噜噜狠狠站欲八-亚洲色噜噜狠狠网站

  • 如何讓 Xcode 在讀寫(xiě)上提速100倍?

    /2017-04-26 18:13:23/

  • \


    上個(gè)月參加了一場(chǎng)西雅圖當(dāng)?shù)氐木€下 iOS 開(kāi)發(fā)者聚會(huì)。Jeff Szuhay 作為一個(gè)有20+年開(kāi)發(fā)經(jīng)驗(yàn)的資深程序員,跟我講了一套提高 iOS 開(kāi)發(fā)效率的方法。相比于其他程序員在 App 啟動(dòng)時(shí)間、架構(gòu)優(yōu)化方面的經(jīng)驗(yàn),老爺子 Jeff 的優(yōu)化基于硬件層面,匠心獨(dú)運(yùn),極客風(fēng)十足。以下是他的經(jīng)驗(yàn)分享和我個(gè)人的實(shí)測(cè)。

    問(wèn)題來(lái)源

    我們都知道 Xcode 在運(yùn)行或編譯時(shí),會(huì)有大量的讀寫(xiě)操作。例如從硬盤(pán)中調(diào)用圖片,我們會(huì)這么操作:

    let image = UIImage(named: "imageName")

    這時(shí)候 Xcode 就會(huì)去電腦的硬盤(pán)中去找到圖片,完成讀寫(xiě)操作。類似的操作還有存取文件等等。如果這類讀取數(shù)量比較少,那么無(wú)傷大雅,但是一旦多起來(lái),尤其是大項(xiàng)目在后期產(chǎn)生了大量的 DerivedData 存在硬盤(pán)上,Xcode 在編譯時(shí)就會(huì)花大量時(shí)間去硬盤(pán)(Disk)上完成讀寫(xiě)這些數(shù)據(jù)的操作。更不幸的是有時(shí)候還會(huì)遇到硬盤(pán)故障等問(wèn)題。

    解決思路

    正所謂“哪里需要優(yōu)化,哪里就需要程序員”,Jeff 在這個(gè)時(shí)候作為一名白衣騎士登場(chǎng)了。多年的計(jì)算機(jī)研究讓他對(duì)整個(gè)計(jì)算機(jī)架構(gòu)非常熟悉。下圖是他展示的計(jì)算機(jī)結(jié)構(gòu)簡(jiǎn)圖。


    計(jì)算機(jī)結(jié)構(gòu)簡(jiǎn)圖

    此圖簡(jiǎn)潔明了得說(shuō)明了計(jì)算機(jī)的基本架構(gòu)。左上角是計(jì)算機(jī)的大腦,CPU,負(fù)責(zé)核心計(jì)算和處理工作;右上角是內(nèi)存(RAM),用來(lái)運(yùn)行程序并與 CPU 進(jìn)行數(shù)據(jù)交流;中間的線是總線,負(fù)責(zé)各個(gè)模塊之間傳遞信息和信號(hào);圖下側(cè)是基本的 System IO。

    再回來(lái)看我們的問(wèn)題:Xcode 現(xiàn)在是在 RAM 中運(yùn)行,然后到 Storage 中讀寫(xiě)數(shù)據(jù),數(shù)據(jù)接著再傳回 RAM。這種方式有兩個(gè)瓶頸:

    • Storage 速度很慢。即使是最先進(jìn)的 SSD,其速度也比 RAM 慢了400倍。也就是無(wú)論你怎么在軟件層優(yōu)化,其速度也無(wú)法突破 SSD 的瓶頸;
    • 數(shù)據(jù)要不停的在各個(gè)模塊之間傳遞。傳遞過(guò)程中亦有延時(shí)和無(wú)謂的時(shí)間消耗。

    針對(duì)以上兩個(gè)瓶頸,Jeff 認(rèn)為,如果我們可以讓所有的讀寫(xiě)操作都在內(nèi)存(RAM)中完成,那么必然能大幅提高 Xcode 的工作效率。問(wèn)題是,怎么實(shí)現(xiàn)?

    實(shí)現(xiàn)方法

    方法的思路很簡(jiǎn)單,大概可以分兩步:

    1. 配置 RAM。在內(nèi)存中專門(mén)開(kāi)出一塊讓 Xcode 使用。
    2. 連接 Xcode。讓 Xcode 連接到我們開(kāi)辟出來(lái)的專屬內(nèi)存空間。

    下面就是見(jiàn)證奇跡的時(shí)刻。

    第一步, 創(chuàng)建 .sh 文件。代碼如下。

    #!/bin/bash RAMDISK=”ramdisk”
    SIZE=1024 #size in MB for ramdisk. diskutil erasevolume HFS+ $RAMDISK `hdiutil attach -nomount ram://$[SIZE*2048]`

    第二步, 運(yùn)行 .sh 文件。在命令行中敲下。


    之后你會(huì)發(fā)現(xiàn)你會(huì)多出一個(gè)叫 ramdisk 的內(nèi)存空間,有大概 1 GB 大小。


    第三步,連接 Xcode。Xcode -> Preferences -> Locations -> Locations Tab,配置 DerivedData。


    Advanced... 也要配置成下圖所示


    以上就是全部步驟。這時(shí)候你就可以享受飛一般的開(kāi)發(fā)了。現(xiàn)在 Project 中所有文件都在內(nèi)存中,相比于 SSD,理論上是要快上一個(gè)數(shù)量級(jí)。

    注意事項(xiàng)

    • 合理分配內(nèi)存空間。我這里分配了 1GB 的內(nèi)存當(dāng)硬盤(pán)使,是因?yàn)槲译娔X本身有 16GB 內(nèi)存空間。假如你電腦內(nèi)存只有 4GB,我不建議你使用這個(gè)方法,或者建議只分配 256M 空間給 Xcode。總之,注意內(nèi)存不足或溢出的情況。

    • 只把 DerivedData 放在 Ram Disk 中。為了極限速度,你當(dāng)然可以把 App 相關(guān)所有的文件都放在內(nèi)存空間中。但是要知道,我們創(chuàng)造的 Ram Disk 本質(zhì)是內(nèi)存,當(dāng)關(guān)機(jī)或重啟的時(shí)候,在 Ram Disk 中的數(shù)據(jù)是會(huì)丟失的。而 DerivedData 是可以重新生成的,所以放在 Ram Disk 中可以最大限度的提高 Xcode 開(kāi)發(fā)中的讀取速度,且十分安全。

<
上一篇: 記憶大師的海報(bào)風(fēng)格是怎么做的? 下一篇: ReactNative中TabBarIOS和NavigatorIOS嵌套使用

Hi,互相認(rèn)識(shí)一下

很高興遇見(jiàn)你,友誼往往從第一次握手開(kāi)始, 微信聯(lián)系: 13765801787

主站蜘蛛池模板: 娇喘嗯嗯 轻点啊视频福利 娇喘高潮教室h | 久久久国产精品免费A片3D | 第一福利视频网站在线 | 久久婷婷五月免费综合色啪 | 超级碰碰青草久热国产 | 拔擦拔擦8X永久华人免费播放器 | 久久91精品国产91 | 九九精品国产亚洲A片无码 九九精彩视频在线观看视频 | 久久久久亚洲日日精品 | 在线观看视频一区 | 九九电影伦理片 | 亚洲看片无码免费视频 | 无限资源在线观看完整版免费下载 | 孕妇泬出白浆18P | 99热婷婷国产精品综合 | 2019一級特黃色毛片免費看 | 朝鲜女人性猛交 | 亚洲一区二区女搞男 | black大战chinese周晓琳 | 婷婷激情综合色五月久久竹菊影视 | 精品午夜久久福利大片免费 | 我们中文在线观看免费完整版 | 伊在香蕉国产在线视频 | 精品久久久噜噜噜久久久app | 欧美猛男gaygayxxgv | 亚洲AV无码一区二区三区牛牛 | 男女高潮又爽又黄又无遮挡 | 亚洲合集综合久久性色 | 国产精品路线1路线2路线 | 久久re热在线视频精69 | 国产麻豆福利AV在线观看 | 欧美极限变态扩张video | 一个人在线观看视频 | 9国产露脸精品国产麻豆 | 亚洲国产欧美日本大妈 | 善良的小峓子2在钱免费中文字 | 91涩涩视频 | 性欧美videosex18嫩 | 人妻少妇久久久久久97人妻 | 99国产精品久久人妻 | 国产色婷亚洲99精品AV |