¿Por qué los sistemas de software empeoran en rendimiento con el tiempo?

Mi conjetura sería fragmentación y contención de recursos.

Por ejemplo, considere los sistemas de archivos. Cuando tiene una unidad / volumen vacío, todo se presenta secuencialmente para obtener el mejor rendimiento posible. Cuando elimina cosas y las agrega, con el tiempo, las cosas que busca se extienden por todo el disco, simplemente disminuyendo el rendimiento cuando lo lee o escribe. Esto es lo que ves en las computadoras portátiles.

Para las aplicaciones que se mantienen en la memoria por completo, supongo que el problema es el intercambio. Los teléfonos Android pueden intercambiar agresivamente las páginas al almacenamiento para ahorrar memoria. Si tiene suficientes aplicaciones en ejecución, cada vez que abre una aplicación, necesita que otra aplicación se envíe al almacenamiento para hacer espacio, reduciendo así el rendimiento.

Otra causa podría ser las aplicaciones mal escritas, tal vez la forma en que manipulan sus estructuras de datos es terrible y no se escala a medida que se agrega nueva información. Esto también podría ocurrir porque la aplicación se prueba de forma aislada, pero en realidad necesita ejecutarse junto con otras aplicaciones.

Para una degradación a largo plazo en el rendimiento, especialmente en los teléfonos, el almacenamiento flash podría ser una razón. La recolección de basura es un mal necesario cuando se usa almacenamiento flash. Muchas de las soluciones flash más nuevas manejan esto de manera inteligente. Pero en unidades flash más antiguas, después de un cierto número de escrituras, cada escritura podría desencadenar una nueva recolección de basura, lo que llevaría a un rendimiento muy malo.

Estas son solo mis conjeturas 🙂 Es difícil de decir sin mirar las aplicaciones exactas.