Trabalho confortável com o Android Studio


Bom dia a todos!


Quão produtivo é o Android Studio? Você acha que ele funciona de maneira inteligente no seu PC ou Mac? Ou, às vezes, você encontra atrasos ou uma assembléia longa? E em grandes projetos?


De qualquer forma, todos queremos obter o máximo desempenho de hardware e software. Portanto, preparei uma lista de pontos e dicas para iniciantes e desenvolvedores experientes que ajudarão você a trabalhar confortavelmente em grandes projetos ou simplesmente aumentar a produtividade. Você também entenderá se o seu equipamento precisa de uma atualização.


Usuários de outros IDEs populares também podem encontrar algo útil para si mesmos.


Motivação


O Android Studio era desajeitado nos dias da transição do Eclipse. E já comecei a procurar maneiras de otimizar o trabalho desse IDE. No entanto, a maioria dos colegas se relaciona com esse "jeito nenhum". Isso funciona. Nem sempre rápido. E tudo bem.


Mas há um ano eu trabalho em outra empresa. O clima é diferente, os desenvolvedores leem relatórios sobre várias tecnologias. Em um desses relatórios, pareceu-me que o tópico deste artigo poderia estar em demanda. Especialmente no âmbito de projetos de maior complexidade técnica.


Tendo conversado com colegas e conhecidos de desenvolvedores, ficou claro para mim que nem todo profissional compreende as nuances de ferro, SO e IDE. Porque aqui tentei coletar um programa educacional completo com base em minha própria experiência.


AVISO LEGAL! Todos os modelos e marcas mencionados no artigo não estão anunciando!


Ferro


Aqui está o que é dito sobre o hardware no site oficial do Android Studio na coluna Requisitos do sistema (sem contar o espaço em disco):


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

Isso é suficiente para o estúdio começar e trabalhar. Não estamos falando de desempenho e conforto.


Neste capítulo, falarei sobre que tipo de hardware é desejável para um trabalho confortável em grandes projetos e o que pode se tornar um "gargalo" em seu sistema.


Aqui, 5 parâmetros são mais críticos para nós:


  • Desempenho da CPU
  • Número de threads de hardware da CPU
  • Quantidade de RAM
  • Velocidade aleatória de leitura e gravação do subsistema de disco
  • A velocidade da leitura de pequenos blocos e da gravação de pequenos blocos de um subsistema de disco

Como muitas vezes trabalhei em configurações baseadas em produtos Intel, falaremos sobre elas. No entanto, se você possui AMD, basta ler e fazer correções para tecnologias vermelhas semelhantes. O único ponto negativo que eu enfrentei na AMD foi descrito em Habré .


Algumas palavras sobre o Mac


Acredita-se que o Mac seja a melhor máquina para desenvolvimento. Isso é dito frequentemente sobre o MacBook Pro.


Pessoalmente, considero isso um mito. Com o advento da tecnologia, o NVMe Mac perdeu sua "mágica". Hoje, mesmo entre os laptops, o Mac não é líder em termos de preço, qualidade e desempenho. Especialmente no contexto de desenvolvimento para o Android Studio.


Caso contrário, para um desenvolvimento confortável, o MacBook Pro de 2015 ou 2016 não possui um processador U. Leia sobre outros recursos e serviços abaixo.


CPU


O desempenho do processador é óbvio e compreensível. Quanto mais alto, melhor. A única coisa a observar é que, se você tiver uma unidade suficientemente rápida, um processador fraco se tornará um gargalo no seu sistema. Especialmente crítico no caso do NVMe-drive. Freqüentemente, ao trabalhar com ele, a ênfase está precisamente no poder da CPU.


Com os tópicos, as coisas são um pouco mais complicadas. Eu li que os usuários reduzem a prioridade do estúdio e seus subprocessos para que o sistema operacional não "paralise" durante a montagem. O motivo aqui é um - 1-2 segmentos de hardware. Isso não é suficiente não apenas para o IDE, mas também para um sistema operacional moderno. O único "mas" - na minha prática, havia situações em que os processadores U de núcleo duplo com Hyper Threading (ou seja, 2 núcleos para 4 threads) trabalhavam normalmente com projetos relativamente pequenos, mas nos grandes os problemas acima começaram.


Obviamente, a virtualização de hardware é necessária.


Portanto, recomendo olhar para o Core i5 HQ Skylake com 4 ou mais fluxos e mais poderoso.


RAM


Em relação aos padrões, DDR3 e superior. Aqui, eu acho, está claro.


Se for possível trabalhar no modo de 2 ou 4 canais e eles não estiverem ativos para você, eu recomendo usá-lo, pois você pode obter um aumento significativo na capacidade de resposta do IDE. Esse recurso é ativado nas configurações de BIOS \ UEFI ou instalando módulos de RAM adicionais (se você ainda tiver um módulo).


Que volume é necessário? Para projetos pequenos (muito pequenos), 4 GB são suficientes. Em projetos maiores, o estúdio é capaz de ocupar rapidamente 4 GB de memória e muito mais. Adicione o emulador HAXM (digamos 2 GB) aqui e leve em consideração que o sistema operacional moderno (com exceção de algumas distribuições Linux) ocupa cerca de 2 GB na memória - e agora parece que 8 GB já estão "invertidos".


Isso não leva em consideração, por exemplo, o Slack (que ocupa uma média de cerca de 500 mb na memória) e o Chrome (onde a conta é atribuída a gigabytes).


Em geral, com 8 GB de RAM, você pode trabalhar com rapidez e conforto - ele economiza uma unidade rápida e um arquivo swap \ swap. Mas vale a pena pensar em uma atualização.


Portanto, a empresa compra novas ou fornece uma atualização das máquinas atuais para 12 GB de RAM ou mais.


SSD


O subsistema de disco é o “gargalo” mais frequente; portanto, é necessário prestar atenção a ele antes de tudo.


Trabalhar com o Android Studio no HDD em 2018 é comparável ao tormento - quanto maior o projeto, mais frisos você recebe. Portanto, obviamente, use apenas SSD.


Como mencionado acima, existem dois parâmetros críticos:


  • Velocidade aleatória de leitura e gravação do subsistema de disco
  • A velocidade da leitura de pequenos blocos e da gravação de pequenos blocos de um subsistema de disco

Quanto mais altos, mais responsivo será o estúdio e mais rápido ele será carregado e montado.


Chamo a atenção para o fato de que não se fala em velocidades lineares de leitura / gravação - isso não é crítico para um estúdio. Portanto, ao escolher uma unidade, é necessário observar não a velocidade de leitura / gravação no site do fabricante ou da loja, mas o número de IOPS (quanto mais, melhor).


Obviamente, aqui não estamos falando sobre o Mac, já que a unidade lá tem seu próprio padrão ou é simplesmente soldada na placa. A substituição é possível, exceto por um volume maior. É improvável que seja possível aumentar as características de velocidade aqui.


NVMe


Se sua placa-mãe suportar a tecnologia NVMe , é melhor usar uma unidade com seu suporte. Permite obter velocidades comparáveis ​​aos SSDs no Mac e superior.


Se você possui uma unidade rápida, o foco está no barramento PCIe e na potência da sua CPU. Portanto, se, por exemplo, sua placa-mãe suportar saída para uma unidade PCIe 2.0x4 \ 3.0x2 ou você não tiver uma CPU muito poderosa, não compre uma unidade muito cara. Veja os recursos do seu sistema e a espessura da sua carteira.


SATA3


Sim, o SATA3 é mais vivo do que todos os que vivem. E você pode trabalhar rapidamente com isso no estúdio.


Nesse segmento, as unidades de alta velocidade são mais acessíveis, portanto, faz sentido olhar imediatamente para as principais soluções com capacidade de 120 GB ou mais.


Intel Optane


Não precisei usar o Android Studio em uma máquina com esta unidade (se é que você pode chamar assim). Se alguém tiver experiência, escreva nos comentários.


GPU


Não há necessidade de falar muito.
Se você escreve aplicativos de usuário comuns, algo como o Intel HD 500 Series é suficiente para o estúdio e o próprio emulador.


Se você está desenvolvendo jogos ou esta é sua máquina pessoal, gráficos discretos fazem sentido. Que - olhe de acordo com suas necessidades.


Sistema de refrigeração e estrangulamento


Não se trata de atualização, mas de manutenção.


A maioria de nós conhece o fenômeno da limitação . Sua implementação é usada para proteger contra superaquecimento.


Obviamente, a otimização leva a uma diminuição da produtividade. Nem sempre é perceptível. Em alguns casos, a operação do Turbo Boost é reduzida aos valores mínimos; em outros, é iniciada uma queda nas frequências máximas do processador. O motivo é a operação insuficiente do sistema de refrigeração. Também é importante entender que a maioria dos testes de estresse (como o AIDA) diagnosticam a operação regular do Turbo Boost como limitação.


No caso de PCs de mesa, tudo está online há muito tempo. No caso de sistemas móveis baseados em heat pipes, muitas informações conflitantes. Isso inclui a maioria dos laptops, nettops, MacBooks e iMacs. Além disso, vamos nos concentrar neles.


Em modernas CPUs móveis poderosas, 80-90 graus em um chip sob carga é a norma. Ao mesmo tempo, os SOCs com essas CPUs têm um design de chip aberto, o que reduz a área de transferência de calor. Todo esse monte de calor é removido esse ridículo projeto semelhante com um pequeno circuito líquido fechado.


Sistema de refrigeração móvel moderno


Deve-se entender que esses sistemas de refrigeração sofrem cargas maiores e requerem manutenção mais frequente. Especialmente no caso de laptops e MacBooks, quando transportados de vibrações, a camada de pasta térmica seca entra em colapso mais rapidamente. E a manutenção prematura é repleta não apenas de perda de produtividade, mas também de vazamentos de termotubos e "despejos" de cristais.


A manutenção consiste em substituir a pasta térmica e limpar o radiador uma vez a cada seis meses a um ano após o final do período de garantia. De qualquer forma, é isso que estamos fazendo.


Devido à pequena área do cristal, faz sentido usar pasta térmica dielétrica com alta condutividade térmica (isso custa em torno de 800-1000 r por grama). Nunca use metal líquido! Caso contrário, você provavelmente não será capaz de separar o cristal da placa!


Se você não possui habilidades suficientes para esse procedimento, é melhor entrar em contato com o serviço.


Configurações de hardware


Este capítulo se concentrará nas funções e configurações do equipamento. Provavelmente, você já está familiarizado com isso.


Intel Hyper Threading


Esta é a tecnologia Intel, que divide o fluxo de hardware do kernel em dois "virtuais". Graças a ela, o sistema vê o processador de 4 núcleos como um de 8 núcleos. Essa abordagem permite que você utilize efetivamente a energia do processador. A AMD possui uma tecnologia semelhante.


Muitas vezes, encontro o fato de que muitos desenvolvedores têm esse recurso desativado e geralmente não sabem disso. No entanto, sua inclusão pode aumentar a capacidade de resposta do estúdio e aumentar o desempenho. Em alguns casos, em 10-15%.


Ele é ativado nas configurações de BIOS \ UEFI da sua placa-mãe ou laptop. Um item é chamado de maneira semelhante ou semelhante. Se você ainda não sabia sobre essa tecnologia, faz sentido verificar sua disponibilidade e ativar se isso não tiver sido feito.


Intel Turbo Boost


Outra tecnologia bem conhecida. De fato, é um overclock automático de curto prazo da CPU e oferece um aumento significativo durante a montagem. E, ao mesmo tempo, tem a capacidade de aquecer processadores móveis a temperaturas não muito distantes da Tjunction .


Portanto, se essa tecnologia foi desativada anteriormente, antes de ligar, é aconselhável verificar o status do sistema de refrigeração e, possivelmente, executar sua manutenção, conforme descrito no capítulo anterior.


Pode ser ativado no BIOS \ UEFI e nas configurações do sistema operacional.


Armazenamento rápido Intel


O suporte para esta placa-mãe de tecnologia é altamente recomendado. Mais detalhes podem ser encontrados aqui .


Só posso recomendar a atualização de drivers desta tecnologia em tempo hábil para a versão mais recente no site oficial da Intel. Mesmo que o fabricante do seu laptop forneça drivers mais antigos.


No meu caso particular, a atualização da versão do driver do fabricante para a atual aumentou a velocidade da gravação linear em cerca de 30% e a velocidade arbitrária em 15%.


Como instalar e atualizar drivers IRST no Linux - eu não sei (e, em geral, isso é possível?). Se alguém souber, escreva nos comentários, terei prazer em complementar o artigo.


Apagar Seguro SSD


O desempenho dos modelos SSD de baixo custo pode diminuir com o tempo. Isso nem sempre acontece devido à "degradação" da unidade. Talvez no seu modelo o TRIM não seja implementado com muita eficiência.


O Secure Erase forçará o controlador a marcar todas as células de memória vazias, o que, teoricamente, deve restaurar o desempenho do SSD ao estado de fábrica. E também apague todos os seus dados! Cuidado, faça backups!


Você pode executar o procedimento usando um utilitário proprietário do fabricante. Se o seu disco for um sistema, você precisará de uma unidade flash, que o utilitário tornará inicializável. Siga as instruções abaixo.


Em um estágio, pode ser necessário reconectar o inversor diretamente durante a operação. Portanto, no caso de M.2, a presença de um adaptador é muito desejável.


O uso de utilitários de terceiros para esta operação é altamente desencorajado.


No entanto, se o seu SSD perder significativamente a velocidade em menos de um ano, é melhor mudar a unidade para outro modelo.


Virtualização de hardware


Essa tecnologia é necessária para a operação rápida do emulador x86. Se você o tiver desativado, ative-o nas configurações do BIOS \ UEFI. Fornecedores diferentes podem ter nomes de configurações diferentes.


Sim, todos sabemos sobre o Genymotion e o BlueStacks, que funcionam bem sem a virtualização de hardware. No entanto, nas imagens desses emuladores, algumas ou muitas implementações da API do Android são bastante alteradas para aumentar a velocidade do trabalho. Isso pode provocar um comportamento que você nunca encontrará em um dispositivo real. Ou, ao depurar, você pode perder alguns bugs. Portanto, a presença de um AVD ágil e funcional é altamente desejável.


SO e software de terceiros


Neste capítulo, discutiremos a possível configuração e instalação do SO de software de terceiros para aumentar a produtividade.


Indexação


Trata-se de encontrar o Windows e o Spotlight no Mac OS. Esses mecanismos podem consumir até 15% da energia da CPU durante a montagem porque tentam indexar tudo o que é gerado no / build.


Obviamente, a partir da indexação é necessário excluir todos os diretórios com os quais o estúdio trabalha:


  • Diretório do SDK
  • Diretório do Studio
  • Diretório do Projeto (altamente recomendado)
  • ~ / .gradle
  • ~ / .android
  • ~ / Android StudioX.X
  • ~ / lldb
  • Diretório de cache Kotlin

Antivírus


Eu sei que nem todos no ambiente de desenvolvimento decidiram usar um antivírus. Mas muitos o usam. Incluindo, às vezes, no Linux e Mac OS. E seu uso é completamente justificado.


Mesmo se você tiver o Windows 10 e nenhum antivírus, o Windows Defender executa suas funções.


A montagem de um antivírus pode ocupar uma parte muito significativa da CPU. Portanto, todos os diretórios listados na coluna "Indexação" devem ser adicionados às exceções do antivírus. Além disso, faz sentido adicionar os nomes de processo do estúdio e da JVM do JetBrains às exceções.


Dependendo da implementação do antivírus, o consumo da CPU durante a compilação diminuirá significativamente ou deixará de consumir a energia da CPU. E o próprio tempo de montagem diminuirá visivelmente.


Criptografia de unidade ou diretório inicial


Essas funções estão presentes em todos os sistemas operacionais populares ou são implementadas por software de terceiros. Obviamente, o trabalho de estúdio no espaço de arquivo criptografado pode exigir mais energia da CPU. Quanto depende da implementação da criptografia. Portanto, é recomendável desativar essas funções completamente ou, se possível, para os diretórios listados na coluna "Indexação".


O TRIM funciona?


O TRIM pode ser implementado tanto em hardware quanto em software. Neste último caso, o dever de chamar TRIM recai sobre o sistema operacional. E, por vários motivos, uma chamada periódica pode ser desconectada, o que leva a uma queda na velocidade do drive.


Você pode testar a integridade e retomar as chamadas TRIM usando utilitários especializados. É recomendável usar utilitários do fabricante da unidade.


RAMDisk


O que é o RAMDisk, a maioria já sabe há muito tempo. Mas qual é a eficácia do trabalho com o estúdio?


Por experiência própria, não vou dizer muito. A menos que você transfira o projeto em si, SDK, estúdio e assim por diante para o RAMDisk. Se você tiver RAM suficiente ...


Com uma simples transferência do projeto com peso superior a 500 mb (a figura é indicada com o cache de compilação), não foi possível obter um aumento superior a 15%. Aparentemente, as chamadas para o SDK e as APIs do sistema estão mais lentas. Como resultado, esse aumento é bastante caro.


O método a seguir é muito mais eficiente e muito mais barato.


Solicitações de unidade de cache


Algo semelhante é implementado no Mac OS. No entanto, em comparação com as tecnologias listadas abaixo, não é tão eficaz.


Infelizmente, conheço apenas duas implementações e ambas estão rigidamente ligadas aos produtos dos fabricantes. É sobre Samsung RAPID e PlexTurbo .


Ambas as tecnologias funcionam com princípios semelhantes (eu descrevo como me entendi):


  • Se houver uma solicitação para ler pequenos volumes, eles serão adiados para a RAM e, quando lidos novamente, serão retirados de lá. Cache de RAM padrão.
  • Se houve um pedido para gravar pequenos dados, eles são adiados para o cache da RAM. Em seguida, as solicitações de gravação são comparadas com o cache. Se você reescreve os mesmos dados nos mesmos caminhos - por que regravá-los no hardware? E o SSD viverá mais.

A única diferença é que o RAPID usa a RAM livre restante como cache. Menos equilíbrio - menos tamanho do cache, menos aceleração. O PlexTurbo permite limitar o tamanho máximo do cache e carregá-lo do disco rígido na inicialização do sistema.


Se usado no SATA 3, você pode obter um aumento de até 50%. Ao usar uma unidade NVMe, ela é menor, mas geralmente também é significativa.


No momento, eu tenho o Samsung 860 EVO SATA 3. Em baixo do spoiler, há benchmarks com o i7 6700HQ e o Turbo Boost desativados.


860 EVO antes de ligar o RAPID e duas execuções após

RAPID desativado



Primeira execução



Segunda execução



Você pode ver claramente como o sistema começa a armazenar dados em cache na primeira execução. O resultado final é significativamente maior que o SATA 3. No entanto, a eficácia dessa tecnologia depende mais das capacidades da CPU. O que é claramente visível quando você ativa o Turbo Boost.


860 EVO + RAPID + Turbo Boost


Sintéticos é, claro, bom. Mas tudo funciona ao ler / gravar pequenos arquivos repetidos. E essas são as operações mais comuns ao executar o Android Studio.


Atualmente, estou trabalhando em um projeto com um cache total de mais de 700 MB, composto por 10 módulos. Um dos módulos é o seu próprio gerador de código baseado em kapt com lógica muito pesada. Dois módulos NDK, um dos quais se refere ao Boost em um caminho externo. O resto são toneladas de código Kotlin.


Se compararmos o tempo de uma reconstrução completa deste projeto, os resultados serão os seguintes:


  • Com o RAPID desligado, o tempo era de 1m 47s 633ms. Tolerante.
  • Com o RAPID ativado, a primeira reconstrução passou em 1m 41s 633ms. Empilhados em erro.
  • Com o RAPID ativado, a segunda reconstrução passou em 1m 7s 132m. Aqui está o ganho. Um pouco mais de 37%, o que é significativo. Recriações adicionais mostram um tempo ainda mais curto, mas com uma diferença de não mais que 3-5 segundos da última medição. O que é imaterial.

Em processos mais curtos, o crescimento no estúdio é imediatamente perceptível.


Como resultado, podemos recomendar essas tecnologias e unidades como uma boa maneira de aumentar a produtividade. Não houve queixas sobre estabilidade.


Android Studio


Muitas dessas dicas são tiradas daqui e complementadas por meus comentários. O resto é o resultado da minha pesquisa e experiência.


Atualizações


O conselho, embora banal, é sempre relevante. Se você não possui um projeto legado, tente, se possível, manter as versões do estúdio e componentes relacionados (como Gradle, Android Plugin, Kotlin Plugin) atualizados. Google e JetBrains fazem muito trabalho para otimizar a velocidade e criar novas versões.


Às vezes, é claro, o constrangimento acontece quando novas versões param de se comportar de maneira previsível e provocam erros. Portanto, temos um regulamento sobre como agir em tais situações.


Em alguns casos, você precisa fazer File-> invalidar caches e reiniciar após a reversão. Se você atualizar o próprio estúdio, é melhor fazer backup dos diretórios e dos diretórios de estúdio. Isso é verdade se o seu projeto contiver qualquer , .



, , 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 .


Plugins


, 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.


Sumário


, . .


- . , .

Source: https://habr.com/ru/post/pt433604/


All Articles