Original article: VS Code Performance – How to Optimize Visual Studio Code and Choose the "Best" Extensions

Visual Studio Code (VS Code) está diseñado para ser liviano. Tiene un conjunto escaso de características esenciales, y puedes agregar características extras a través de extensiones.

Pero el rendimiento será afectado inevitablemente a medida que tu colección de extensiones crezca.

¿Evalúas el rendimiento de una extensión antes de instalarlo? ¿Qué haces si el inicio de VS Code crece? De la ausencia de personas que escriban acerca de este tópico, supongo que la gente no lo sabe.

En este artículo, te explicaré los factores que afectan el rendimiento de una extensión. También calificaré el rendimiento de algunas extensiones populares. Luego describiré cómo puedes auditar el rendimiento de tu conjunto de extensiones existente, y te daré algunos consejos generales de rendimiento.

Requisitos mínimos de hardware y software

Antes de que entremos en las extensiones, hablemos brevemente sobre cuáles son los requisitos mínimos para ejecutar VS Code.

Una computadora comprada en los últimos años con especificaciones modestas deberías ser capaz de ejecutar VS Code sin ningún problema.

Hardware

El hardware mínimo que recomiendo es:

  • 1.6 GHz un procesador más rápido;
  • Al menos 1 GB de RAM;
  • Al menos 200MB Espacio de Disco.

Sistemas Operativos

VS Code ha sido probado en los siguientes Sistemas Operativos:

  • OS X Yosemite y posteriores.
  • Windows 7 (con .NET Framework 4.5.2), 8.0, 8.1 y 10 (32-bit y 64-bit).
  • Linux (Debian): Ubuntu Desktop 14.04, Debian 7.
  • Linux (Red Hat): Red Hat Enterprise Linux 7, CentOS 7, Fedora 23.

Construcciones de la comunidad no oficiales para Raspberry Pi y Chromebooks

Jay Rodgers lanzó un proyecto de código abierto que ejecuta construcciones nightly de VS Code para Raspberry Pi y Chromebooks.

He mantenido el proyecto por unos pocos años ahora y se ha expandido de proveer binarios para Pi a proveer soporte y herramientas para que VS Code se ejecute en dispositivos ARM de baja gama que de otra manera podría no ser compatible como Chromebooks (los cuales constituyen alrededor del 60% de los dispositivos en las escuelas ahora).

Si lo quieres intentar por ti mismo, puedes seguir las instrucciones que ha dispuesto. Él ha trabajado muchísimo para hacerlo lo más sencillo posible.

No todas las extensiones son creados iguales

extension inequality parody
Edición de "La Dama de la Justicia Vendada" por Tingey Injury Law Firm en Unsplash

Las extensiones son cargados y descargados bajos condiciones distintas. El autor de la extensión decide esto. Esto es especificado a través de Eventos de Activación, el cual discutiremos más adelante.

No hay comentarios en el editor indicando si una extensión está activa o no. Entonces, ¿cómo sabemos cuando una extensión está activa?

La mayoría de las extensiones están escritas en TypeScript, pero también pueden estar escritos en JavaScript. Las extensiones pueden incluir módulos de Node como dependencias.

Puedes empaquetar y minificar tus archivos fuente en un solo archivo si lo deseas. La Documentación de VS Code recomienda hacer esto para mejorar los tiempos de carga, pero muchas extensiones no hacen esto. Estas opciones afectan su rendimiento.

Las extensiones son mayormente proyectos personales de código abierto escrito por desarrolladores. La calidad del código variará. El mantenimiento del código variará.

Las extensiones escritas por Microsoft no son inmunes a estas deficiencias, pero son menos probable de sufrirlos.

Criterio para seleccionar una extensión

La mayoría de las listas de extensiones hablan sobre las características geniales, y un poco más. Si algo es fuego, por favor dime un poco sobre el combustible y los humos también. ???

Algunos de los criterios que sugiero involucra mirar el código fuente. No te dejes desanimar por eso. Para reunir los hechos claves solamente toma un par de minutos. ¡Te mostraré cómo!

  1. ¿Está ya disponible la característica que necesito en VS Code?

Te demostré que no necesitas muchas extensiones populares en un artículo "VS Code: no necesitas esa extensión". Puedes consultar la documentación de VS Code para chequear en una característica particular.

2.  ¿La extensión tiene las características que necesito?

Consulta la página de extensión en el Mercado de Visual Studio para averiguar esto.

3.  ¿Cuándo se carga y se activa una extensión?

Discutiré esto en detalle en la sección Eventos de Activación. Necesitas verificar el package.json del código fuente para averiguar esto con anticipación.

Puedes correr el comando Desarrollador: Rendimiento de Inicio para ver los Eventos de Activación de las extensiones instaladas. Discuto esto más adelante en la sección Cómo auditar el rendimiento.

4.  ¿Están optimizados los recursos?

Necesitas chequear el código fuente para ver si usa un empaquetador. Puedes verificar el package.json para ver si la sección de scripts tiene un paso de pre-build para empaquetar.

El archivo de extensión VSIX es un archivo comprimido de archivos para el código y el listado en el mercado. Los desarrolladores con frecuencia incluyen archivos innecesarios. Hay un archivo .vscodeignore para excluir archivos.

El número de archivos que el VSIX contiene tiene un impacto en el tiempo de activación en frío. El tiempo de activación en frío es la primera ejecución de la extensión después de que lo instalas. Tiende a ser un poco más lento que las otras veces. Supongo que esto es debido a que VSIX está descomprimido y cacheado.

Así es como luce la extensión Vetur cuando lo abres en 7zip.

vetur VSIX opened in 7zip

5. ¿Han habido problemas de rendimiento reportado recientemente, cuales están sin resolver?

Los puedes descubrir auditando el rendimiento de la extensión. Necesitas verificar también las issues en el repositorio de Git.  

6. ¿El código tiene pruebas?

La extensión va a ser más susceptible a errores sin pruebas. Necesitas chequear el código fuente para ver si hay pruebas.

7. ¿Está siendo mantenido activamente?

La sección Detalles de Proyecto de la página de la extensión te da una vista general de la actividad del repositorio público de Git. En algunos casos, una extensión podría estar "terminado", así que el mantenimiento no es una consideración importante.

Marktetplace Page Project Details

Eventos de Activación

Los Eventos de Activación son eventos que disparan la activación de una extensión. Definen las condiciones para cargar y descargar una extensión.

El autor de una extensión lo declara en el campo activationEvents del package.json (Manifiesto de Extensión).

Hay un rango de Eventos de Activación para elegir. Una extensión puede escuchar a muchos Eventos de Activación para producir un enfoque más específico.

Este es un Diagrama de Secuencia de lo que sucede cuando lanzas VS Code. Te da una idea de la cronología de los eventos que ocurren, lo cual afecta cuando puedes interactuar con el editor y usar ciertas extensiones.

launching VS Code

Ahora, iré por los Eventos de Activación más importantes. Empezaré con el enfoque más amplio, y continuaré hasta que alcance el enfoque más estrecho.

Evento de inicio

El Evento de Activación * activará una extensión cuando VS Code inicie. Estas extensiones siempre estarán activas. Esto impacta el tiempo de inicio de VS Code.

"activationEvents": [
    "*"
]

La documentación de VS Code nos da el siguiente consejo:

Para asegurar una experiencia de usuario estupenda, por favor usa este evento de activación en tu extensión solamente cuando ninguna otra combinación de eventos de activación funcione en tu caso de uso.

En mi opinión, tiene que haber una caso especial para conceder a una extensión este enfoque. Es preferible usar al menos onStartUpFinished.

Extensiones Populares con este Evento de Activación: ES Lint (11M instalaciones), Live Server (7.4 instalaciones), GitLens (6.5M instalaciones), Beautify (5.4M instalaciones), Bracket Pair Colorizer (3.6M instalaciones), Git History (2.9M instalaciones), Settings Sync (2M instalaciones), indent-rainbow (1.1M instalaciones).

Evento onStartupFinished

Esta extensión será activada en algún momento después de que VS Code inicie. Esto es como el evento de activación *, pero no ralentizará el inicio de VS Code.

"activationEvents": [
    "onStartupFinished"
]

Extensiones Populares con este Evento de Activación: Prettier (8.5M instalaciones).

Evento onLanguage

Esta extensión será activada cuando un archivo de un cierto lenguaje es abierto.

"activationEvents": [
    "onLanguage:json",
    "onLanguage:markdown",
    "onLanguage:typescript"
]

El evento onLanguage toma un valor language identifier. Puedes declarar tantos lenguajes como desees.

Extensiones Populares con este Evento de Activación: La mayoría de las extensiones la categoría de "Lenguajes de Programación" en el Mercado de Visual Studio Code tiene una entrada onLanguage juntamente con otros Eventos de Activación, Vetur (5.6M instalaciones - activo solamente para Vue), YAML (4.3M instalaciones - activo solamente para YAML), Better Comments (1.1M instalaciones - activo solamente para lenguajes soportados).

Evento workspaceContains

Esta extensión será activada cuando abras una carpeta que contenga al menos un archivo que coincida con un patrón glob.

"activationEvents": [
    "workspaceContains:**/package.json"
]

Evento onCommand

Esta extensión será activada cuando invoques un comando.

"activationEvents": [
        "onCommand:vscode-docker.compose.down",
        "onCommand:vscode-docker.compose.restart",
        "onCommand:vscode-docker.compose.up",
        ...
]

Otros Eventos de Activación

Puedes leer la lista completa de Eventos de Activación en la documentación de referencia.

¿Las extensiones establecen un enfoque específico constantemente?

No!

Demasiadas extensiones usan el Evento de Activación *.

Así es como calificaría la definición del enfoque de algunas de las extensiones que he usado:

  • Las Buenas: Vetur, YAML, Better Comments.
  • Las Malas:
  • Prettier: Sería mejor apuntar solamente a los lenguajes que lo soportan.
  • Markdown All in One: Está activo cuando un archivo markdown está abierto, o el trabajo de espacio contiene un README.md. Lo último parece innecesario para mí.
  • Los Feos: Todas las extensiones con el Evento de Activación * mencionado arriba.

¿Qué impacto puede tener el empaquetamiento en el rendimiento de la extensión?

bundling a burger
Edición de foto sin título por Pablo Merchán Montes en Unsplash

¡Puede hacer un impacto enorme!

John Papa habla sobre esto en su artículo "¿Es lento tu Extensión de VS Code Extension? Así es cómo lo puedes Acelerar!".

Él revela los resultados de una examinación profunda de 2 extensiones de Microsoft:

  1. Cuenta de Azure: Tiempo de activación reducida de empaquetamiento cerca del 50%. El tamaño de extensión fue reducido del 6.2MB a 840KB a través de empaquetar y excluir más archivos (en el archivo .vscodeignore).
  2. Docker: Tiempo de activación reducida de empaquetamiento de 3.5 segundos a 2 segundos. También, una consideración es el tiempo de activación en frío, lo que tiende a ser más lento que otras veces (tiempo de activación cálida). El tiempo de activación en frío fue de unos grandísimos 20 segundos de a 2 segundos.

Puedes mejorar tu extensión favorita planteando este problema con el autor de una extensión. La Guía de Usuario de Empaquetamiento de Extensiones explica cómo.

Cómo auditar el rendimiento

Puedes ejecutar el comando de Desarrollador: Mostrar Extensiones en Ejecución para obtener los estados básicos sobre las extensiones en ejecución. Ordena las extensiones desde los tiempos de activación más largos a los más cortos. El tiempo es titulado "Activación de Inicio" si la extensión es cargado al inicio.

Como puedes ver en la captura de pantalla, también da advertencias sobre problemas de rendimiento.

running extensions

Como mencioné previamente, vale la pena notar que el tiempo de activación en frío (la primera vez que una extensión se ejecuta) y tiempo de activación cálida (segunda ejecución y demás) puede variar un montón. Por esta razón, deberías basar el rendimiento típico de una extensión en la segunda ejecución.

Puedes auditar el rendimiento de inicio ejecutando el comando Desarrollador: Rendimiento de Inicio. Abre un documento con estadísticas detalladas sobre temas tales como: información de sistema, marcas de rendimiento, estadísticas de activación de la extensión, cargador de estadísticas para módulos, y más.

startup performance system info

Los resultados son específicos al proyecto actual y a cualquier archivo abierto cuando ejecutes el comando.

La sección Estadísticas de Activación de la Extensión da una vista general más detallada del rendimiento de la extensión. Es muy útil ver los Eventos de Activación sin necesidad de verificar el código fuente de una extensión.

startup performance

Puedes ver que VS Code carga sus propias extensiones "esenciales" para Git, Emmet, y unos otros pocos en el inicio también.? No quieres la lista de extensiones cargando al inicio para que se haga demasiado largo!

Tarjetas de puntuación para algunos de las extensiones más populares

Me estoy enfocando aquí en las extensiones que yo mismo he usado. No quiero especular en extensiones que realmente no he usado.

ESLint

ESLint es la herramientas de análisis estático más popular para JavaScript y TypeScript. Resalta los problemas en el editor con líneas onduladas en rojo.

  • Autor: Microsoft.
  • Número de instalaciones: 11 millones.
  • Clasificación de Mercado: 4.3/5 (156).
  • Características Principales: Reportar problemas de sintaxis. Habilidad de arreglar automáticamente algunos problemas.
  • Eventos de Activación: Al inicio (*). Podría ser cambiado a onStartupFinished en el próximo lanzamiento. Mira esta issue cerrado para una explicación de por qué fue hecha esta decisión.
  • Los recursos están optimizados: Sí.
  • Tamaño de archivo: 133KB.
  • Tiempo de activación en mi sistema: 39ms.
  • Conjunto de pruebas: Parece ser muy básico. Sólo una prueba menor de patrones glob.
  • Mantenido activamente: Sí.
  • Extensiones Alternativas: JS Hint, TS Lint.

ESLint es una extensión sólida. El rendimiento es excelente.

Es decepcionante que se cargue al inicio. Si te molesta, puedes intentar JS Hint (escrito por el mismo desarrollador) para JavaScript, y TS Lint para TypeScript. O podes forkear el proyecto y cambiarlo vos mismo!

Es mantenido activamente. No tiene un conjunto de pruebas significativo.

Puntuaje: 8/10

Prettier - Formateador de Código

Prettier es un formateador de código flexible. Actualmente soporta los siguientes lenguajes: JavaScript, TypeScript, Flow, JSX, JSON, CSS, SCSS, Less, HTML, Vue, Angular, GraphQL, Markdown, YAML.

  • Autor: Prettier.
  • Número de instalaciones: 8.5 millones.
  • Clasificación de Mercado: 3.8/5 (204).
  • Características Principales: Formatear código.
  • Eventos de Activación: onStartupFinished.
  • Los recursos están optimizados: Sí.
  • Tamaño de archivo: 2.1MB.
  • Tiempo de activación en mi sistema: 286ms.
  • Conjunto de pruebas: Sí. La Cobertura luce decente.
  • Mantenido activamente: Sí.
  • Extensiones Alternativas: Beautify.

Prettier hace un gran trabajo al simplificar el formateo de código.

El rendimiento está bien, pero tal vez podría ser mejorado. Está en la parte más lenta del espectro de activación.

El alcance de activación es muy amplia. Sería preferible apuntar a los lenguajes soportados solamente. Encontré un problema con el formateo de Markdown, así que no lo uso para formatear Markdown actualmente. Estas son las cosas que pueden ser cambiadas fácilmente.

Puntuaje: 7.5/10.

Live Server

Live Server lanza un servidor de desarrollo local para dar una previa en vivo de tus archivos HTML y SVG.

  • Autor: Retwick Dey.
  • Número de instalaciones: 7.5 millones.
  • Clasificación de Mercado: 4.5/5 (269).
  • Características Principales: Previa en vivo de HTML y SVG .
  • Eventos de Activación: Al inicio (*).
  • Los recursos están optimizados: No.
  • Tamaño de archivo: 2.5MB.
  • Tiempo de activación en mi sistema: 2513ms.
  • Conjunto de pruebas: Sí. Pruebas básicas.
  • Mantenido activamente: No. El último commit fue hace ocho meses. El autor de la extensión está buscando un nuevo mantenedor.
  • Extensiones Alternativas: No he encontrado una!

Cuando funciona, es una extensión conveniente de usar.

El rendimiento es pobre y ya no se lo mantiene.

Recomendaría convertirse en el mantenedor y darle forma. O encontrar otra extensión para el trabajo.

Puntuaje: 5/10.

GitLens

GitLens ayuda visualizar la autoría del código y explorar repositorios de Git.

  • Autor: Eric Amodio.
  • Número de instalaciones: 6.5 millones.
  • Clasificación de Mercado: 4.86/5 (387)
  • Características Principales: Visualización de la autoría del repositorio en un vistazo. Vistas ricas de barras laterales de repositorios git.
  • Eventos de Activación: Al inicio (*).
  • Los recursos están optimizados: Sí.
  • Tamaño de archivo: 1.5MB.
  • Tiempo de activación en mi sistema: 35ms.
  • Conjunto de pruebas: No.
  • Mantenido activamente: Sí, pero la actividad reciente es baja. El último commit fue hace 4 meses.
  • Extensiones Alternativas: Ninguna.

GitLens es una buena idea y puede ser útil para ganar información de una base de código.

Está bien escrito y el rendimiento es excelente.

He usado la extensión solamente de las anotaciones culpables, pero hay muchas más características y opciones de configuraciones (135 opciones individuales!).

Hay opciones para habilidad cada una de las características, lo cual es un enfoque muy bueno. Puedes activar y desactivar el codelens fácilmente.

Ha habido una calma en la actividad recientemente. No sé si es una situación temporal o no. Así que, es difícil adivinar qué tan bien las extensiones serán soportadas en el futuro. El autor tiene detalles para apoyarlo.

Puntuaje: 9/10.

Vetur

Soporte de lenguaje para Vue.

  • Autor: Pine Wu.
  • Número de instalaciones: 5.6 millones.
  • Clasificación de Mercado: 4.5/5 (117)
  • Características Principales: Resaltado de sintaxis. Intellisense. Formateador de Código.
  • Eventos de Activación: onLanguage: vue.
  • Los recursos están optimizados: No.
  • Tamaño de archivo: 70.6 MB.
  • Tiempo de activación en mi sistema: 252ms. Sin embargo, la estadística "Finalizar Activado" es de 3943ms!
  • Conjunto de pruebas: Sí.
  • Mantenido activamente: Sí.
  • Extensiones Alternativas: Sin alternativa obvia. El Formateo puede ser hecho con Prettier.

Vetur es la extensión esencial para desarrollar aplicaciones Vue en VS Code.

El resaltado de sintaxis, intellisense, y referencias al pasar el ratón son geniales para tener para el desarrollo de Vue.

El tamaño de la extensión es GIGANTE.

El rendimiento es un poco errático. Toma al menos 4 segundos en mi máquina para terminar la activación, lo cual es mucho más largo que las Características del Lenguaje de JavaScript integradas. Hay también un retraso notable para la autocompletación de la sintaxis de JavaScript.

Los Desarrolladores han trabajado en el empaquetamiento de la extensión en este pull request.

Puntuaje: 7/10.

Sincronización de Opciones

Sincronización de Opciones sincroniza las opciones usando Gist de Github.

  • Autor: Shan Khan.
  • Número de instalaciones: 2 millones.
  • Clasificación de Mercado: 4.61/5 (638)
  • Características Principales: Opciones de sincronización.
  • Eventos de Activación: Al inicio (*).
  • Los recursos están optimizados: Sí.
  • Tamaño de archivo: 1.2 MB.
  • Tiempo de activación en mi sistema: 2513ms.
  • Conjunto de pruebas: Sí.
  • Mantenido activamente: No. El Último commit fue hace 4 años.
  • Extensiones Alternativas: Este es una característica integrada en VS Code.

Esta era una extensión distinguida. Sincronizar tu configuración completa del editor entre máquinas es super útil.

Desde Julio de 2020, la misma funcionalidad es una característica integrada en VS Code para esto mismo. La principal diferencia es que la extensión te guarda tus configuraciones en un gist, por lo cual tienes la opción de compartir con otros también.

El tiempo de activación es bastante lenta. ¿Es justificablemente lenta? Es difícil de decirlo.

Mi suposición es que la característica integrada hará un mejor trabajo eventualmente ya que cuenta con el respaldo de Microsoft. La extensión parece que ya no es más soportada.

Puntuaje: 8/10.

Markdown All in One

Markdown All in One cumple mucho de tus necesidades de markdown.

  • Autor: Yu Zhang.
  • Número de instalaciones: 1.7 millones.
  • Clasificación de Mercado: 4.8/5 (90)
  • Características Principales: Edición estilo palanca. Tabla de contenidos.
  • Eventos de Activación: onLanguage: markdown, onCommand: markdown.extension.printToHtmlBatch, workspaceContains: README.md.
  • Los recursos están optimizados: Sí.
  • Tamaño de archivo: 4.1 MB.
  • Tiempo de activación en mi sistema: 195ms.
  • Conjunto de pruebas: Sí.
  • Mantenido activamente: Sí.
  • Extensiones Alternativas: Marky Markdown.

Es una extensión sólida y el rendimiento es excelente.

Tiene muchísimas características para mi gusto. Para muchas personas es atractivo tener todo lo que podrían querer en una sola extensión.

El Evento de Activación workspaceContains: README.md parece una inclusión innecesaria para mí. La mayoría de mis proyectos tienen un README, pero rara vez los edito. Así que para mí es como tener la extensión siempre activa.

La lógica para la table de contenidos es un poco usual. Tenía algunos problemas con los falsos positivos en el pasado. No sé si has sido arreglado completamente.

El tamaño de las extensión puede ser reducido excluyendo las capturas de pantallas de README del paquete de extensión.

Puntuaje: 8/10.

Consejos de Rendimiento Generales

Usa un Sistema Operativo 64-bit

Si actualizas a una versión 64-bit de un Sistema Operativo, puedes expandir la cantidad de Memoria Virtual (VM) disponible a VS Code de 2 GB a 4 GB.

Esto permite a VS Code manejar cargas de trabajo más grandes significativamente cuando el VM es requerido.

Desactivar la restauración del estado del proyecto al inicio

VS Code automáticamente restaura el estado del proyecto de la sesión previa. Esto puede prolongar el tiempo que toma para cargar un proyecto.

Puedes desactivar algunas de las opciones de restauración para acelerar el tiempo de carga:

  • Workbench › Editor: Restore View State: Activado por defecto.
  • Files: Restore Undo Stack: Activado por defecto.
  • Workbench: Startup Editor: Controla qué editor es mostrado al inicio. El valor por defecto es la página de bienvenida. Puedes poner este a ninguno para prevenir cualquier aparición del editor al inicio.

Desactivas características pesadas que impactan el rendimiento de edición

  • Minimap: Editor › Minimap: Enabled. Activado por defecto.
  • Word wrap: Editor: Word Wrap. Desactivado por defecto.
  • CodeLens: Editor: CodeLens. Activado por defecto.
  • Format on Save: Editor: Format On Save. Desactivado por defecto.
  • Format on Paste: Editor: Format On Paste. Desactivado por defecto.

Desactivar las extensiones para un espacio de trabajo

Puedes desactivar una extensión para un espacio de trabajo (proyecto).

disable extension for workspace

Es muy probable que quieras hacer esto para las extensiones que se ejecutan siempre. Para un proyecto de Java, no vas a necesitar ESLint!

Puedes tomar el enfoque opuesto también. Puedes desactivar una extensión globalmente, y activarlo solamente para un número selecto de proyectos.

Car conjunto de extensiones

Puedes especificar un directorio alternativo para las extensiones desde la línea de comando como abajo.

code --extensions-dir <dir>

Así que, si quieres usar diferentes conjuntos de extensiones, lo puedes. Puedes agregar un atajo de escritorio para esto, o un alias para ejecutar esto regularmente desde la línea de comando.

Una cosa a tener en mente es la sincronización. Si tu sincronizas tus extensiones entre las máquinas, podrías querer excluir extensiones de tu sincronización. De otra manera, arruinarías tu carpeta por error cuando lo cambies.

Idealmente, no deberías necesitar hacer esto.

Desactivar todas las extensiones para una sesión

Puedes empezar VS Code con todas las extensiones de usuario desactivados desde la línea de comando. ¡Modo Zen mas mas!

code --disable-extensions

Arreglando problemas de rendimiento

Experimentando lentitud o una pantalla en blanco

VS Code tiene problemas con el hardware de aceleración GPU (Unidad de Procesamiento Gráficos) en algunos sistemas. Puedes ver si este es el caso desactivando la aceleración de GPU.

code --disable-gpu

Para establecerlo permanentemente, haz lo siguiente:

  • Abre la Paleta de Comandos (Ctrl+Shift+P).
  • Ejecuta el comando Preferencias: Configurar Argumentos de Tiempo de Ejecución.
  • Este comando abrirá un archivo argv.json para configurar los argumentos de tiempo de ejecución. Podrías ver ya algunos argumentos por defecto allí.
  • Agregar "disable-hardware-acceleration": true.
  • Reiniciar VS Code.

La Instalación parece estar corrupta con el mensaje [Unsupported]

VS Code hace una verificación en segundo plano cuando inicia para chequear si has cambiado algo de sus archivos fuente. Si este es el caso, verás el texto [Unsupported] en el título de barra.

Una causa para este problema puede ser el software de anti-virus. VS Code podría haber estado bajo cuarentena por error, o se removieron archivos por el software de anti-virus (ver el issue #94858). Verifica tus configuraciones del software de anti-virus para prevenir esto.

Para resolver esta situación puedes reinstalar VS Code. Esto reemplazará los archivos modificados y silenciará la advertencia.

Palabras Finales

No deberías necesitar comprometer el rendimiento para tener las características que necesitas.

El enfoque más pragmático es agregar incrementalmente las extensiones que necesitas. Haz una pequeña investigación cada vez y prueba la extensión. Y antes de que lo sepas, tendrás un portafolio asombroso de extensiones.