Comprensión durante la lectura
¿Cuál es el espectro de ejecución propuesto por el autor y en qué orden recomienda transitarlo?
- Síncrono
- Asíncrono
- Paralelo.
Empezar desde el nivel más bajo y solo avanzar cuando se pruebe que es necesario. Esto evita optimización prematura y mantiene la complejidad baja.
¿Qué criterios determinan que un método es candidato a ejecutarse de forma asíncrona o en paralelo?
Solo si cumple alguna de las siguientes condiciones, se puede pensar en usar código asíncrono (ni siquiera estamos hablando de ejecución en segundo plano).
- No toca la UI.
- Almacena datos de forma persistente.
- Transforma o procesa conjuntos de datos grandes.
- Se comunica a través de internet.
¿Por qué el autor recomienda empezar siempre con un método sincrónico, incluso cuando la tarea parece pesada?
La mayoría de dispositivos de hoy en día tienen una gran capacidad de cómputo y el código corre muy rápidamente. Saltar a un dominio de aislamiento de segundo plano puede ralentizar el código más de lo que puede optimizarlo.
¿Cómo define el autor el concepto de "carga cognitiva" y por qué lo relaciona con la concurrencia?
Cada capa de concurrencia añade:
- Más puntos de suspensión.
- Más estados para entender.
- Más oportunidades para bugs por cancelación.
Por estas razones, si el código se mantiene síncrono, entonces se evita esta carga cognitiva.
¿Qué lista de verificación propone el autor antes de decidir usar ejecución asíncrona o paralela?
- ¿Este código bloquea el
MainActorlo suficiente para que sea visible? - ¿Este trabajo escala con los datos del usuario? (N items -> N costo)
- ¿El trabajo involucra I/O?
- ¿El trabajo se beneficia de combinar varias operaciones independientes?
- ¿Esta lógica se llama con frecuencia?
Si se cumplen 2 o más condiciones, entonces se justifica usar async o paralelismo.
¿Qué costos asocia el autor con la ejecución paralela y cómo afectan a los dispositivos Apple?
- Puede haber un aumento en CPU y memoria.
- Se pueden saturar los recursos del sistema.
- Posible mayor consumo de batería.
¿Cómo justifica el autor que la experiencia de usuario (UX) puede motivar el uso del segundo plano incluso cuando el rendimiento no lo exige?
A veces interrumpir la UI por un frame va a hacer sentir al usuario que la aplicación es lenta. En este caso, vale la pena ejecutar en segundo plano incluso aunque el tiempo total aumente ligeramente.
Top comments (0)