Trabajo cómodo con Android Studio


Buen dia a todos!


¿Cuán productivo es Android Studio? ¿Crees que funciona de manera inteligente en tu PC o Mac? O, a veces, te encuentras con retrasos o una larga asamblea? ¿Y en grandes proyectos?


En cualquier caso, todos queremos obtener el máximo rendimiento del hardware y el software. Por lo tanto, he preparado una lista de puntos y consejos para principiantes y desarrolladores experimentados que lo ayudarán a trabajar cómodamente con grandes proyectos o simplemente a aumentar la productividad. También comprenderá si su equipo necesita una actualización.


Los usuarios de otros IDE populares también pueden encontrar algo útil para ellos mismos.


Motivación


Android Studio fue torpe en los días de la transición de Eclipse. Y ya entonces comencé a buscar formas de optimizar el trabajo de este IDE. Sin embargo, la mayoría de los colegas se relacionan con este "de ninguna manera". Funciona No siempre rápido. Y bien


Pero hace un año que trabajo en otra empresa. El clima es diferente, los desarrolladores leen informes sobre diversas tecnologías. En uno de estos informes, me pareció que el tema de este artículo podría estar en demanda. Especialmente en el marco de proyectos de mayor complejidad técnica.


Después de hablar con colegas y conocidos de desarrolladores, me quedó claro que ni siquiera todos los "profesionales" entienden los matices del hierro, el sistema operativo y el IDE. Porque aquí intenté recopilar un programa educativo completo basado en mi propia experiencia.


Descargo de responsabilidad! ¡Todos los modelos y marcas mencionados en el artículo no son publicitarios!


Hierro


Esto es lo que se dice sobre el hardware en el sitio web oficial de Android Studio en la columna Requisitos del sistema (sin incluir espacio en disco):


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

Esto es suficiente para que el estudio solo comience y funcione. No estamos hablando de ningún rendimiento y comodidad.


En este capítulo hablaré sobre qué tipo de hardware es deseable para un trabajo cómodo con grandes proyectos y qué puede convertirse en un "cuello de botella" en su sistema.


Aquí, 5 parámetros son los más críticos para nosotros:


  • Rendimiento de la CPU
  • Número de hilos de hardware de CPU
  • Cantidad de RAM
  • Velocidad de lectura y escritura aleatoria del subsistema de disco
  • La velocidad de la lectura de bloques pequeños y la escritura de bloques pequeños de un subsistema de disco

Como a menudo trabajé en configuraciones basadas en productos Intel, hablaremos sobre ellas. Sin embargo, si tiene AMD, simplemente léalo y haga correcciones para tecnologías rojas similares. El único inconveniente que enfrenté en AMD ya se describió en Habré .


Algunas palabras sobre Mac


Se cree que la Mac es la mejor máquina para el desarrollo. Esto se suele decir sobre el MacBook Pro.


Personalmente, considero esto un mito. Con el advenimiento de la tecnología, NVMe Mac ha perdido su "magia". Así que hoy, incluso entre las computadoras portátiles, la Mac no es líder en términos de calidad-precio-rendimiento. Especialmente en el contexto de desarrollo para Android Studio.


De lo contrario, para un desarrollo cómodo, el MacBook Pro 2015 o 2016 no tiene un procesador U. Lea sobre otras características y servicios a continuación.


CPU


El rendimiento del procesador es obvio y comprensible. Cuanto más alto sea, mejor. Lo único que debe tener en cuenta es que si tiene una unidad lo suficientemente rápida, un procesador débil se convertirá en un cuello de botella en su sistema. Especialmente crítico en el caso de NVMe-drive. A menudo, cuando se trabaja con él, el énfasis está precisamente en la potencia de la CPU.


Con hilos, las cosas son un poco más complicadas. Leí que los usuarios reducen la prioridad del estudio y sus subprocesos para que el sistema operativo no se "bloquee" durante el ensamblaje. La razón aquí es de uno a 1-2 hilos de hardware. Esto no es suficiente no solo para el IDE, sino también para un sistema operativo moderno. El único "pero": en mi práctica, había situaciones en las que los procesadores en U de doble núcleo con Hyper Threading (es decir, 2 núcleos por 4 hilos) funcionaban normalmente con proyectos relativamente pequeños, pero en los grandes comenzaron los problemas anteriores.


Por supuesto, se requiere virtualización de hardware.


Por lo tanto, recomiendo mirar hacia el Core i5 HQ Skylake con más de 4 transmisiones y más potente.


RAM


En cuanto a los estándares, DDR3 y superior. Aquí, creo, está claro.


Si es posible trabajar en modo de 2 o 4 canales y no está activo, le recomiendo usarlo, ya que puede obtener un aumento significativo en la capacidad de respuesta del IDE. Esta característica se activa en la configuración BIOS \ UEFI o mediante la instalación de módulos RAM adicionales (si todavía tiene un módulo).


¿Qué volumen se necesita? Para proyectos pequeños (realmente pequeños), 4 GB son suficientes. En proyectos más grandes, el estudio puede ocupar rápidamente 4 GB de memoria y más. Agregue el emulador HAXM (digamos 2 GB) aquí y tenga en cuenta que el sistema operativo moderno (con la excepción de algunas distribuciones de Linux) ocupa alrededor de 2 GB en la memoria, y ahora resulta que 8 GB ya son "consecutivos".


Esto no tiene en cuenta, por ejemplo, Slack (que tiene un promedio de aproximadamente 500 mb en memoria) y Chrome (donde la factura va a gigabytes).


En general, con 8 GB de RAM, puede trabajar de forma rápida y cómoda: ahorra un disco rápido e intercambia \ intercambia archivos. Pero vale la pena pensar en una actualización.


Por lo tanto, la compañía compra otras nuevas o proporciona una actualización de las máquinas que funcionan actualmente para 12 GB de RAM o más.


SSD


El subsistema de disco es el "cuello de botella" más frecuente, por lo tanto, primero es necesario prestarle atención.


Trabajar con Android Studio en el HDD en 2018 es comparable al tormento: cuanto más grande sea el proyecto, más frisos se le proporcionarán. Por lo tanto, obviamente, use solo SSD.


Como se mencionó anteriormente, hay dos parámetros críticos:


  • Velocidad de lectura y escritura aleatoria del subsistema de disco
  • La velocidad de la lectura de bloques pequeños y la escritura de bloques pequeños de un subsistema de disco

Cuanto más altos sean, más receptivo será el estudio y más rápido se cargará y ensamblará.


Le llamo la atención sobre el hecho de que no se habla de velocidades de lectura / escritura lineales; esto no es crítico para un estudio. Por lo tanto, al elegir una unidad, no debe mirar su velocidad de lectura / escritura en el sitio web del fabricante o de la tienda, sino la cantidad de IOPS (cuanto más, mejor).


Por supuesto, aquí no estamos hablando de la Mac, ya que la unidad allí tiene su propio estándar o simplemente está soldada en la placa. El reemplazo es posible, excepto para un volumen mayor. Es poco probable que sea posible aumentar las características de velocidad aquí.


NVMe


Si su placa base admite la tecnología NVMe , entonces es mejor usar una unidad con su soporte. Le permite obtener velocidades comparables a las SSD en Mac y superiores.


Si tiene un disco rápido, el foco está en el bus PCIe y la potencia de su CPU. Por lo tanto, si, por ejemplo, su placa base admite la salida a una unidad PCIe 2.0x4 \ 3.0x2 o si no tiene una CPU muy potente, no debe comprar una unidad muy costosa. Observe las capacidades de su sistema y el grosor de su billetera.


SATA3


Sí, SATA3 está más vivo que todos los vivos. Y puedes trabajar rápidamente en el estudio.


En este segmento, las unidades de alta velocidad son más asequibles, por lo que tiene sentido buscar de inmediato las mejores soluciones con una capacidad de 120 GB o más.


Intel Optane


No tuve que usar Android Studio en una máquina con esta unidad (si puede llamarlo así). Si alguien tiene experiencia, escriba los comentarios.


GPU


No hay necesidad de hablar mucho.
Si escribe aplicaciones de usuario normales, algo como Intel HD 500 Series es suficiente para el estudio y el emulador en sí.


Si está desarrollando juegos o esta es su máquina personal, entonces los gráficos discretos tienen sentido. Cuál - mira según tus necesidades.


Sistema de enfriamiento y estrangulamiento


No se trata de actualizar, sino de mantenimiento.


La mayoría de nosotros conocemos el fenómeno de la aceleración . Su implementación se utiliza para proteger contra el sobrecalentamiento.


Por supuesto, la aceleración conduce a una disminución de la productividad. No siempre se nota. En algunos casos, la operación de Turbo Boost se reduce a los valores mínimos, en otros, comienza una caída en las frecuencias máximas del procesador. La razón es la operación insuficiente del sistema de enfriamiento. También es importante comprender que la mayoría de las pruebas de estrés (como AIDA) diagnostican la operación regular de Turbo Boost como estrangulamiento.


En el caso de las PC de escritorio, todo ha estado en línea durante mucho tiempo. En el caso de los sistemas móviles basados ​​en tuberías de calor, mucha información contradictoria. Esto incluye la mayoría de las laptops, nettops, MacBooks e iMacs. Además, nos centraremos en ellos.


En las CPU móviles modernas y potentes, la norma es 80-90 grados en un chip bajo carga. Al mismo tiempo, los SOC con estas CPU tienen un diseño de chip abierto, lo que hace que el área de transferencia de calor sea pequeña. Todo este montón de calor se elimina este ridículo Diseño similar con un pequeño circuito cerrado de líquido.


Moderno sistema de enfriamiento móvil


Debe entenderse que tales sistemas de enfriamiento experimentan mayores cargas y requieren un mantenimiento más frecuente. Especialmente en el caso de las computadoras portátiles y MacBooks, cuando se transporta desde las vibraciones, la capa de pasta térmica seca se colapsa más rápido. Y el mantenimiento prematuro está plagado no solo de una pérdida de productividad, sino también de fugas de termotubos y "vertederos" de cristales.


El mantenimiento consiste en reemplazar la pasta térmica y limpiar el radiador una vez cada seis meses a un año después del final del período de garantía. En cualquier caso, esto es lo que estamos haciendo.


Debido a la pequeña área del cristal, tiene sentido usar pasta térmica dieléctrica con alta conductividad térmica (esto cuesta alrededor de 800-1000 r por gramo). ¡Nunca use metal líquido! De lo contrario, lo más probable es que no puedas separar el cristal de la placa.


Si no tiene suficientes habilidades para este procedimiento, es mejor ponerse en contacto con el servicio.


Configuraciones de hardware


Este capítulo se centrará en las funciones y configuraciones del equipo. Lo más probable es que ya estés familiarizado con él.


Intel Hyper Threading


Esta es la tecnología Intel, que divide el flujo de hardware del núcleo en dos "virtuales". Gracias a ella, el sistema ve el procesador de 4 núcleos como uno de 8 núcleos. Este enfoque le permite utilizar eficazmente la potencia del procesador. AMD tiene una tecnología similar.


A menudo encuentro el hecho de que muchos desarrolladores tienen esta característica deshabilitada y generalmente no lo saben. Sin embargo, su inclusión puede aumentar la capacidad de respuesta del estudio y el rendimiento de la construcción. En algunos casos, en un 10-15%.


Se enciende en la configuración BIOS \ UEFI de su placa base o computadora portátil. Un artículo se llama de manera similar o similar. Si aún no conocía esta tecnología, entonces tiene sentido verificar su disponibilidad y habilitarla si no se ha hecho.


Intel Turbo Boost


Otra tecnología bien conocida. De hecho, es un overclocking automático a corto plazo de la CPU y proporciona un aumento significativo durante el ensamblaje. Y, al mismo tiempo, tiene la capacidad de calentar procesadores móviles a temperaturas no muy alejadas de Tjunction .


Por lo tanto, si esta tecnología se desactivó anteriormente, antes de encenderla es aconsejable verificar el estado del sistema de enfriamiento y, posiblemente, realizar su mantenimiento, como se describe en el capítulo anterior.


Se puede activar tanto en BIOS \ UEFI como en la configuración del sistema operativo.


Intel Rapid Storage


El soporte para esta placa base tecnológica es muy recomendable. Más detalles se pueden encontrar aquí .


Solo puedo recomendar actualizar los controladores de esta tecnología de manera oportuna a la última versión del sitio web oficial de Intel. Incluso si el fabricante de su computadora portátil le proporciona controladores más antiguos.


En mi caso particular, la actualización de la versión del controlador del fabricante a la actual aumentó la velocidad de grabación lineal en aproximadamente un 30% y la velocidad arbitraria en un 15%.


Cómo instalar y actualizar los controladores IRST en Linux: no lo sé (y, en general, ¿es esto posible?). Si alguien sabe, escriba en los comentarios, con mucho gusto complementaré el artículo.


Borrado seguro de SSD


El rendimiento de los modelos SSD de bajo costo puede disminuir con el tiempo. Esto no siempre sucede debido a la "degradación" de la unidad. Quizás en su modelo TRIM no se implemente de manera muy eficiente.


Secure Erase forzará al controlador a marcar todas las celdas de memoria como vacías, lo que, en teoría, debería restaurar el rendimiento del SSD al estado de fábrica. ¡Y, también, borre todos sus datos! ¡Ten cuidado, haz copias de seguridad!


Puede llevar a cabo el procedimiento utilizando una utilidad patentada del fabricante. Si su disco es del sistema, necesitará una unidad flash, que la utilidad hará que sea de arranque. Siga las instrucciones a continuación.


En una etapa, puede que tenga que volver a conectar la unidad directamente durante la operación. Por lo tanto, en el caso de M.2, la presencia de un adaptador es muy deseable.


Se desaconseja utilizar utilidades de terceros para esta operación.


Sin embargo, si su SSD ha perdido velocidad significativamente en menos de un año, es mejor cambiar la unidad a otro modelo.


Virtualización de hardware


Esta tecnología es necesaria para el funcionamiento rápido del emulador x86. Si lo tiene deshabilitado, habilítelo en la configuración BIOS \ UEFI. Diferentes proveedores pueden tener diferentes nombres de configuración.


Sí, todos sabemos acerca de Genymotion y BlueStacks, que funcionan bien sin virtualización de hardware. Sin embargo, en las imágenes de estos emuladores, algunas o muchas implementaciones de la API de Android se modifican enormemente para aumentar la velocidad del trabajo. Esto puede provocar un comportamiento que nunca encontrará en un dispositivo real. O al depurar, puede perder un par de errores. Por lo tanto, la presencia de un AVD ágil y funcional es altamente deseable.


SO y software de terceros


En este capítulo, analizaremos la posible configuración del SO e instalación de software de terceros para aumentar la productividad.


Indexación


Se trata de encontrar Windows y Spotlight en Mac OS. Estos mecanismos pueden tomar hasta el 15% de la potencia de la CPU durante el ensamblaje porque intentan indexar todo lo que se genera en / build.


Por supuesto, de la indexación es necesario excluir todos los directorios con los que trabaja el estudio:


  • Directorio SDK
  • Directorio de estudio
  • Directorio de proyectos (muy recomendado)
  • ~ / .gradle
  • ~ / .android
  • ~ / Android StudioX.X
  • ~ / lldb
  • Directorio de caché de Kotlin

Antivirus


Sé que no todos en el entorno de desarrollo decidieron usar un antivirus. Pero muchos lo usan. Incluyendo, a veces, en Linux y Mac OS. Y su uso está completamente justificado.


Incluso si tiene Windows 10 y no tiene antivirus, Windows Defender realiza sus funciones.


Al ensamblar un antivirus puede tomar una parte muy significativa de la CPU. Por lo tanto, todos los directorios enumerados en la columna "Indexación" deben agregarse a las excepciones de antivirus. Además, tiene sentido agregar los nombres de proceso del estudio y la JVM de JetBrains a las excepciones.


Dependiendo de la implementación del antivirus, el consumo de CPU durante la compilación disminuirá significativamente o dejará de consumir energía de la CPU. Y el tiempo de montaje disminuirá notablemente.


Cifrado de unidad o directorio de inicio


Estas funciones están presentes en todos los sistemas operativos populares o están implementadas por software de terceros. Por supuesto, el trabajo de estudio en espacio de archivos cifrados puede requerir más potencia de CPU. Cuánto depende de la implementación del cifrado. Por lo tanto, se recomienda deshabilitar dichas funciones completamente o, si es posible, para los directorios enumerados en la columna "Indexación".


¿Funciona TRIM?


TRIM puede implementarse tanto en hardware como en software. En el último caso, el deber de llamar a TRIM recae en el sistema operativo. Y, por varias razones, una llamada periódica puede desconectarse, lo que conduce a una disminución de la velocidad de la unidad.


Puede probar el estado y reanudar las llamadas TRIM utilizando utilidades especializadas. Se recomienda utilizar utilidades del fabricante de la unidad.


RAMDisk


¿Qué es RAMDisk? La mayoría lo sabe desde hace mucho tiempo. Pero, ¿qué tan efectivo es trabajar con el estudio?


Desde mi propia experiencia, no diré mucho. A menos que transfiera el proyecto en sí, SDK, estudio, etc. a RAMDisk. Si tienes suficiente RAM ...


Con una simple transferencia del proyecto que pesa más de 500 mb (la cifra se indica con el caché de compilación), no pude lograr un aumento de más del 15%. Aparentemente, las llamadas al SDK y las API del sistema se ralentizan. Como resultado, dicho aumento es bastante costoso.


El siguiente método es mucho más eficiente y mucho más barato.


Solicitudes de unidad de almacenamiento en caché


Algo similar se implementa en Mac OS. Sin embargo, en comparación con las tecnologías enumeradas a continuación, no es tan efectivo.


Desafortunadamente, conozco solo dos implementaciones, y ambas están rígidamente vinculadas a los productos de los fabricantes. Se trata de Samsung RAPID y PlexTurbo .


Ambas tecnologías funcionan con principios similares (lo describo tal como lo entendí a mí mismo):


  • Si hubo una solicitud para leer volúmenes pequeños, entonces se posponen a la RAM y, cuando se vuelven a leer, ya se toman de allí. Caché RAM estándar.
  • Si hubo una solicitud para escribir datos pequeños, se posponen a la memoria caché de RAM. A continuación, las solicitudes de escritura se comparan con el caché. Si vuelve a escribir los mismos datos en las mismas rutas, ¿por qué volver a grabarlos en el hardware? Y SSD vivirá más tiempo.

La única diferencia es que el RAPID usa la RAM libre restante como caché. Menos equilibrio: menos tamaño de caché, menos aceleración. PlexTurbo le permite limitar el tamaño máximo de caché y cargarlo desde el disco duro al iniciar el sistema.


Si se usa en SATA 3, puede obtener un aumento de hasta el 50%. Cuando se usa un disco NVMe, es más pequeño, pero a menudo también es significativo.


Por el momento, tengo el Samsung 860 EVO SATA 3. en funcionamiento. Bajo el spoiler hay puntos de referencia con i7 6700HQ y Turbo Boost desactivados.


860 EVO antes de encender el RAPID y dos carreras después

RAPID desactivado



Primera carrera



Segunda carrera



Puede ver claramente cómo el sistema comienza a almacenar en caché los datos en la primera ejecución. El resultado final es significativamente más alto que SATA 3. Sin embargo, la efectividad de esta tecnología depende más de las capacidades de la CPU. Lo que es claramente visible cuando enciendes Turbo Boost.


860 EVO + RAPID + Turbo Boost


Los sintéticos son, por supuesto, buenos. Pero todo funciona al leer / escribir pequeños archivos repetidos. Y estas son las operaciones más comunes cuando se ejecuta Android Studio.


Actualmente estoy trabajando en un proyecto con un caché total de más de 700 MB, que consta de 10 módulos. Uno de los módulos es su propio generador de código basado en kapt con lógica muy pesada. Dos módulos NDK, uno de los cuales se refiere a Boost en una ruta externa. El resto son toneladas de código Kotlin.


Si comparamos el tiempo de una reconstrucción completa de este proyecto, los resultados son los siguientes:


  • Con RAPID apagado, el tiempo era 1m 47s 633ms. Tolerante
  • Con RAPID habilitado, la primera reconstrucción pasó en 1m 41s 633ms. Apilado en error.
  • Con RAPID habilitado, la segunda reconstrucción pasó en 1m 7s 132m. Aquí está la ganancia. Un poco más del 37%, lo cual es significativo. Las reconstrucciones posteriores muestran un tiempo aún más corto pero con una diferencia de no más de 3-5 segundos desde la última medición. Lo cual es irrelevante.

En procesos más cortos, el crecimiento en el estudio se nota de inmediato.


Como resultado, podemos recomendar estas tecnologías y unidades como una buena forma de aumentar la productividad. No hubo quejas sobre la estabilidad.


Android Studio


Muchos de estos consejos se toman de aquí y se complementan con mis comentarios. El resto es el resultado de mi investigación y experiencia.


Actualizaciones


El consejo, aunque banal, siempre es relevante. Si no tiene un proyecto heredado, entonces, si es posible, intente mantener actualizadas las versiones del estudio y los componentes relacionados (como Gradle, Android Plugin, Kotlin Plugin). Google y JetBrains hacen mucho trabajo para optimizar la velocidad y crear nuevas versiones.


A veces, por supuesto, la vergüenza ocurre cuando las nuevas versiones dejan de comportarse de manera predecible y provocan errores. Por lo tanto, tenemos una regulación sobre cómo actuar en tales situaciones.


En algunos casos, debe hacer Archivo-> invalidar cachés y reiniciar después de la reversión. Si actualiza el estudio en sí, es mejor hacer una copia de seguridad de los directorios del estudio y los directorios de configuración. , - , .



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


Complementos


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


Resumen


, . .


- . , .

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


All Articles