使用Android Studio舒适地工作


祝大家有美好的一天!


Android Studio的生产力如何? 您认为它可以在PC或Mac上正常运行吗? 或者,有时您会遇到滞后或长时间的集会? 在大型项目上?


无论如何,我们都希望从硬件和软件中获得最佳性能。 因此,我为初学者和经验丰富的开发人员准备了一些要点和技巧,它们将帮助您轻松地处理大型项目或仅提高生产力。 您还将了解您的设备是否需要升级。


其他流行的IDE的用户也可能会发现对自己有用的东西。


动机


从Eclipse过渡以来,Android Studio一直很笨拙。 然后,我已经开始寻找优化此IDE工作的方法。 但是,大多数同事对此都“没有办法”。 可以用 并不总是很快。 好吧


但是一年来我一直在另一家公司工作。 气候有所不同,开发人员阅读了有关各种技术的报告。 在这些报告之一中,在我看来,可能需要本文的主题。 尤其是在技术复杂度较高的项目框架中。


与开发人员的同事和熟人交谈之后,对我来说很清楚,甚至不是每个“专业人士”都了解铁,操作系统和IDE的细微差别。 因为在这里我尝试根据自己的经验收集完整的教育计划。


免责声明! 文章中提到的所有型号和品牌都不是广告!



这是在Android Studio官方网站上的“系统要求”列中关于硬件的说法(不包括磁盘空间):


3 GB RAM minimum, 8 GB RAM recommended; plus 1 GB for the Android Emulator 1280x800 minimum screen resolution 

这足以使工作室开始工作。 我们不是在谈论任何性能和舒适性。


在本章中,我将讨论在大型项目中进行舒适工作所需的硬件,以及可能成为系统“瓶颈”的硬件。


在这里,5个参数对我们来说最关键:


  • CPU性能
  • CPU硬件线程数
  • RAM数量
  • 磁盘子系统的随机读写速度
  • 磁盘子系统的小块读取和小块写入速度

由于我经常基于Intel产品进行配置,因此我们将讨论它们。 但是,如果您拥有AMD,请阅读并更正类似的红色技术。 我在AMD面对的唯一缺点已经在Habré上进行了描述


关于Mac的几句话


人们认为Mac是开发的最佳机器。 关于MacBook Pro,通常会这样说。


我个人认为这是一个神话。 随着技术的出现,NVMe Mac已失去其“魔力”。 因此,今天,即使在笔记本电脑中,Mac在价格质量,性能方面也不是领导者。 特别是在针对Android Studio的开发环境中。


否则,为了舒适地进行开发,2015或2016 MacBook Pro没有U处理器。 在下面阅读有关其他功能和服务的信息。


中央处理器


处理器性能显而易见,可以理解。 越高,越好。 唯一需要注意的是,如果您有足够快的驱动器,那么性能较弱的处理器将成为系统的瓶颈。 对于NVMe驱动器尤其重要。 通常,在使用它时,重点只是在CPU的功能上。


使用线程,事情要复杂一些。 我了解到,用户降低了Studio及其子流程的优先级,以使OS在组装过程中不会“挂起”。 这里的原因是1-2个硬件线程。 这不仅对于IDE而言还不够,对于现代OS而言还不够。 唯一的“但是”-在我的实践中,有些情况下带有超线程的双核U处理器(即2个内核对应4个线程)在相对较小的项目中正常工作,但是在较大的项目中,上述问题就开始了。


当然,需要硬件虚拟化。


因此,我建议使用4+流和更强大功能的Core i5 HQ Skylake。


内存


关于标准,DDR3和更高版本。 我认为这很明显。


如果可以在2通道或4通道模式下工作并且您不处于活动状态,则强烈建议您使用它,因为这样可以大大提高IDE的响应速度。 此功能可以在BIOS \ UEFI设置中激活,也可以通过安装其他RAM模块(如果您还有一个模块)来激活。


需要多少体积? 对于小型(确实很小)的项目,4GB就足够了。 在较大的项目中,工作室可以快速占用4GB内存和更多空间。 我们在此处添加HAXM仿真器(例如2 GB),并考虑到现代OS(某些Linux发行版除外)在内存中约占2 GB,现在事实证明8 GB已经“背靠背”了。


这没有考虑到,例如,Slack(平均需要约500 mb的内存)和Chrome(其中的账单达到千兆字节)。


通常,拥有8GB的RAM,您可以快速舒适地工作-它可以保存快速驱动器和swap \ swap文件。 但是值得考虑升级。


因此,该公司将购买新的计算机,或者为12GB RAM或更高版本提供当前可用计算机的升级。


固态硬盘


磁盘子系统是最常见的“瓶颈”,因此有必要首先注意它。


在2018年使用HDD在Android Studio上使用HDD可以与折磨相提并论-项目越大,给您带来的麻烦就越多。 因此,显然,仅使用SSD。


如上所述,有两个关键参数:


  • 磁盘子系统的随机读写速度
  • 磁盘子系统的小块读取和小块写入速度

它们越高,工作室的响应速度越快,加载和组装的速度就越快。


我提请您注意没有线性读写速度的事实-这对于工作室来说并不重要。 因此,在选择驱动器时,您无需考虑其在制造商或商店网站上的读写速度,而应关注IOPS的数量(越大越好)。


当然,这里我们不是在谈论Mac,因为那里的驱动器要么具有自己的标准,要么被简单地焊接到板上。 可以更换,但体积较大。 在此不可能提高速度特性。


NVMe


如果您的主板支持NVMe技术,则最好使用支持它的驱动器。 它可以让您获得与Mac或更高版本的SSD相当的速度。


如果您有快速驱动器,则重点是PCIe总线和CPU的功率。 因此,例如,如果您的主板支持输出到PCIe 2.0x4 \ 3.0x2驱动器,或者您没有非常强大的CPU,则不应购买非常昂贵的驱动器。 查看系统的功能和钱包的厚度。


SATA3


是的,SATA3比所有生命还活着。 您可以在工作室中快速进行处理。


在此细分市场中,高速驱动器的价格更便宜,因此有必要立即查看容量为120 GB或更高容量的顶级解决方案。


英特尔傲腾


我不必在具有此驱动器的计算机上使用Android Studio(如果可以调用它的话)。 如果有人有经验,请在评论中写。


显卡


无需多说。
如果您编写普通的用户应用程序,则工作室和仿真器本身就可以使用诸如Intel HD 500系列之类的东西。


如果您正在开发游戏或这是您的个人计算机,那么离散图形就很有意义。 哪-根据您的需要。


冷却系统和节流


这与升级无关,而与维护有关。


我们大多数人都知道节流现象。 它的实现用于防止过热。


当然,节流导致生产率下降。 并不总是很明显。 在某些情况下,Turbo Boost的操作会降低到最小值,在其他情况下,最大处理器频率会开始下降。 原因是冷却系统运行不充分。 同样重要的是要了解,大多数压力测试(例如AIDA)都将常规Turbo Boost操作诊断为节流。


对于台式机,所有内容都已经在线很长时间了。 在基于热管的移动系统中,存在许多相互矛盾的信息。 这包括大多数笔记本电脑,上网本,MacBook和iMac。 此外,我们将专注于它们。


在现代功能强大的移动CPU上,负载下的芯片通常80-90度。 同时,带有这些CPU的SOC具有开放式芯片设计,从而减小了传热面积。 所有这些热量都被清除了 这个嘲笑 小型闭合液体回路的类似设计。


现代移动冷却系统


必须理解的是,这样的冷却系统承受更大的负载并且需要更频繁的维护。 尤其是在笔记本电脑和MacBook的情况下,当振动运输时,干燥的导热膏层会更快塌陷。 而且,不及时的维护不仅会导致生产率下降,还会导致热管泄漏和晶体“倾倒”。


维护包括在保修期结束后每六个月至一年更换一次导热膏并清洁散热器。 无论如何,这就是我们正在做的。


由于晶体的面积小,因此使用具有高导热率的介电导热膏是有意义的(每克成本约为800-1000 r)。 切勿使用液态金属! 否则,您很可能将无法从板上分离晶体!


如果您没有足够的技能来执行此过程,则最好与服务部门联系。


硬体设定


本章将重点介绍设备的功能和设置。 您很可能已经熟悉它。


英特尔超线程


这是英特尔技术,它将内核硬件流分为两个“虚拟”流。 多亏了她,系统才将4核处理器视为8核处理器。 这种方法使您可以有效地利用处理器能力。 AMD也有类似的技术。


我经常遇到一个事实,即许多开发人员禁用了此功能,而他们通常对此一无所知。 但是,将其包含进来可以提高工作室的响应能力和构建性能。 在某些情况下,降低10-15%。


它会在主板或笔记本电脑的BIOS \ UEFI设置中打开。 以相似或相似的方式调用一个项目。 如果您仍然不知道该技术,那么检查它的可用性并启用(如果尚未完成)是有意义的。


英特尔睿频加速


另一个著名的技术。 实际上,这是CPU的自动短期超频,并且在组装期间会大大增加。 同时,它具有将移动处理器加热到距Tjunction不远的温度的能力。


因此,如果先前禁用了该技术,则建议在开启之前检查冷却系统的状态,并可能进行维护,如上一章所述。


可以同时在BIOS \ UEFI和操作系统设置中将其打开。


英特尔快速存储


强烈建议支持此技术的主板。 可以在这里找到更多详细信息。


我只能建议您及时将此技术的驱动程序更新到英特尔官方网站上的最新版本。 即使您的笔记本电脑制造商为您提供了较旧的驱动程序。


在我的特殊情况下,从制造商的驱动程序版本更新到最新版本,可以使线性记录的速度提高大约30%,而任意速度则提高15%。


如何在Linux上安装和更新IRST驱动程序-我不知道(通常,这可能吗?)。 如果有人知道,请在评论中写下,我将很乐意为这篇文章做补充。


SSD安全擦除


低成本SSD型号的性能可能会随时间下降。 由于驱动器的“性能下降”,这种情况并非总是会发生。 也许在您的模型中, TRIM并不是很有效地实现。


安全擦除将强制控制器将所有存储单元标记为空,从理论上讲,这应将SSD的性能恢复到出厂状态。 并且,还要擦除所有数据! 小心,请备份!


您可以使用制造商的专有实用程序执行此过程。 如果您的磁盘是系统磁盘,那么您将需要一个闪存驱动器,该实用程序将使其可启动。 请按照以下说明进行操作。


在某一阶段,您可能必须在运行期间直接重新连接驱动器。 因此,在M.2的情况下,非常需要适配器。


不建议将第三方实用程序用于此操作。


但是,如果您的SSD在不到一年的时间内损失了很多速度,则最好将驱动器更改为其他型号。


硬件虚拟化


此技术对于x86仿真器的快速运行是必需的。 如果已禁用它,请在BIOS \ UEFI设置中启用它。 不同的供应商可能具有不同的设置名称。


是的,我们都知道Genymotion和BlueStacks,它们在没有硬件虚拟化的情况下仍然可以正常工作。 但是,在这些仿真器的图像中,为了提高工作速度,对Android API的某些或许多实现进行了很大的更改。 这会激起您在真实设备上永远不会遇到的行为。 或者在调试时,您可能会错过几个错误。 因此,非常需要一种有效且灵活的AVD。


操作系统和第三方软件


在本章中,我们将讨论可能的OS配置和第三方软件的安装,以提高生产率。


索引编制


这是关于在Mac OS上查找Windows和Spotlight。 这些机制在组装过程中可能占用多达15%的CPU能力,因为它们试图索引/ build中生成的所有内容。


当然,从索引中必须排除工作室使用的所有目录:


  • SDK目录
  • 工作室目录
  • 项目目录(强烈推荐)
  • 〜/ .gradle
  • 〜/ .android
  • 〜/ Android StudioX.X
  • 〜/ lldb
  • Kotlin缓存目录

防毒软件


我知道并非开发环境中的每个人都决定使用防病毒软件。 但是许多人使用它。 有时包括Linux和Mac OS。 并且它的使用是完全合理的。


即使您具有Windows 10并且没有防病毒软件,Windows Defender也会执行其功能。


组装防病毒软件会占用CPU的很大一部分。 因此,应将“索引”列中列出的所有目录添加到防病毒例外中。 另外,将Studio和JetBrains JVM的进程名称添加到异常中也很有意义。


根据防病毒的实现,构建期间的CPU消耗将大大减少,或者完全停止消耗CPU功率。 并且组装时间本身将明显减少。


驱动器或主目录加密


这些功能存在于所有流行的OS上,或由第三方软件实现。 当然,在加密文件空间中进行工作室工作可能需要更多的CPU能力。 多少取决于加密的实现。 因此,建议完全禁用这些功能,或者尽可能禁用“索引”列中列出的目录。


TRIM有效吗?


TRIM既可以用硬件实现,也可以用软件实现。 在后一种情况下,调用TRIM的责任在于操作系统。 并且,由于各种原因,定期呼叫可能会断开,从而导致驱动速度下降。


您可以使用特殊的实用程序测试运行状况并恢复TRIM调用。 建议使用驱动器制造商的实用程序。


RAM盘


什么是RAMDisk,大多数人早就知道了。 但是与工作室合作有多有效?


根据我自己的经验,我不会说太多。 除非您将项目本身,SDK,studio等转移到RAMDisk。 如果您有足够的内存...


通过简单地传输超过500 mb的项目(该数字在构建缓存中指出),我无法实现超过15%的增长。 显然,对SDK和系统API的调用会变慢。 结果,这种增加是相当昂贵的。


下面的方法效率更高而且更便宜。


缓存驱动器请求


Mac OS中实现了类似的功能。 但是,与下面列出的技术相比,它不是那么有效。


不幸的是,我只知道两个实现,并且两个都与制造商的产品紧密相关。 关于Samsung RAPIDPlexTurbo


两种技术都遵循相似的原理(据我所知,我在描述):


  • 如果请求读取小卷,则将它们推迟到RAM,并在重新读取时从那里取走。 标准RAM缓存。
  • 如果有写小数据的请求,则将它们推迟到RAM缓存中。 接下来,将写请求与缓存进行比较。 如果您在相同的路径上重写相同的数据-为什么将它们重新记录在硬件中? 而且SSD的寿命更长。

唯一的区别是RAPID使用剩余的可用RAM作为缓存。 较少的平衡-较小的缓存大小,较少的加速。 PlexTurbo允许您限制最大高速缓存大小,并在系统启动时从硬盘加载它。


如果在SATA 3上使用,则最多可以增加50%。 使用NVMe驱动器时,它较小,但通常也很重要。


目前,我正在使用Samsung 860 EVO SATA 3,在扰流器下的是禁用i7 6700HQ和Turbo Boost的基准测试。


打开RAPID之前的860 EVO,之后运行两次

快速关闭



第一次跑



第二次



您可以清楚地看到系统在第一次运行时如何开始缓存数据。 最终结果明显高于SATA3。但是,这项技术的有效性更多地取决于CPU容量。 打开Turbo Boost时,清晰可见。


860 EVO + RAPID + Turbo Boost


合成当然是好的。 但是,当读取/写入重复的小文件时,这一切都可行。 这些是运行Android Studio时最常见的操作。


我目前正在从事一个项目,该项目的总缓存超过700 MB,由10个模块组成。 模块之一是其自己的基于kapt的代码生成器,其逻辑非常繁重。 两个NDK模块,其中一个涉及外部路径上的Boost。 剩下的就是大量的Kotlin代码。


如果我们比较此项目的完全重建时间,结果如下:


  • 关闭RAPID后,时间为1m 47s 633ms。 宽容。
  • 启用RAPID后,第一次重建在1m 41s 633ms中通过。 堆积成错误。
  • 启用RAPID后,第二次重建在1m 7s 132m中通过。 这是收益。 略高于37%,非常重要。 进一步的重建显示出更短的时间,但与上次测量之间的差异不超过3-5秒。 这无关紧要。

在较短的过程中,工作室的增长立即可见。


因此,我们可以推荐这些技术和驱动器,以提高生产率。 没有关于稳定性的抱怨。


Android Studio


这些提示中的许多都是从这里获取的并附有我的评论。 其余的是我的研究和经验的结果。


更新内容


这些建议虽然平淡无奇,但总是很重要。 如果您没有遗留项目,请尝试保持Studio和相关组件(例如Gradle,Android插件,Kotlin插件)的版本最新。 Google和JetBrains进行了大量工作来优化速度并构建新版本。


当然,有时候,当新版本停止行为可预见并引发错误时,就会出现尴尬。 因此,我们对如何在这种情况下采取行动制定了法规。


在某些情况下,您需要执行File->使缓存无效并在回滚后重新启动。 如果您更新Studio本身,最好备份Studio目录和设置目录。 如果您的项目包含任何内容,则为true , .



, , API, library-. . , , .


, . , .


Instant Run


. " ". . -.


, , . . , - , Instant Run.


Build, Execution, Deployment -> Instant Run Enable Instant Run.


Attach to Process


. , ( ) . .


, - Attach debugger to Android process.


Gradle build configs


, buildConfig flavour , release- (, crashlytics, annotation- gradle-)- debug . - , , .


, buildConfig, PNG crunching, - debug-. png . :


 android { buildTypes { myConfig { crunchPngs false } } } //   android plugin android{ aaptOptions { cruncherEnabled false } } 

WebP


minimum api level 18, WebP. , . . , - .



(, app-), Compile independent modules in parallel Settings->Build, Execution, Deployment -> Compiler. CPU . - heap size , , .


gradle.properties


org.gradle.parallel=true


Gradle daemon


- , .


jvm gradle . . - . gradle.properties


org.gradle.daemon=true


Offline-


Gradle web- , . . , - .


Build, Execution, Deployment -> Gradle Offline work.


heap size Android Studio IDEA


. xmx1280m ( , RAM ). GC , , .


heap size , Gradle.


Gradle gradle.properties


org.gradle.jvmargs=-Xms1024m -Xmx4096m


1 4 . , .


Android Studio IDEA Help -> Edit Custom VM Options JVM- .


JVM , - . java -X .


外挂程式


, IDE. - . . .


- . Settings -> Plugins , , . , - .


Inspections


Settings -> Editor -> Inspections IDE. .


, . - , .


Power Save mode


File. (, , Spell Checking ..). . , , VS Code.


, .


Settings Repository


, . . .


codestyle- Git, copyright , codestyle .


, , .idea , - .


AVD


AVD . 3 , ( x86-).


, x86- Pie AVD . . , .


, HAXM 2 RAM .


, AVD CPU - , . , CPU - .


- . Settings -> Advanced . , . , Cold Boot. .


AVD


GPU , - GPU, . , . Cold Boot.


总结


, . .


- . , .

Source: https://habr.com/ru/post/zh-CN433604/


All Articles