Buenos días a todos. Mi nombre es Michel Vestrater. Trabajo en Facebook, creo, porque podría tener otro nombre hoy. Pero es bueno estar aquí y es muy bueno ver todos sus rostros sin ver también su dormitorio y su ropa y su tazón de avena vacío. Gracias por tenerme.
Actualmente estoy trabajando en un proyecto llamado Flipper que es una plataforma de código abierto que es utilizada principalmente por desarrolladores móviles. Y voy a hablar sobre cómo optimizar la representación de tablas realmente grandes. Y en esta charla, hablaré un poco sobre Flipper. Encontraré una aplicación realmente útil de bitcoins y les mostraré una biblioteca de código abierto.
Entonces, en primer lugar, hay una herramienta llamada ADB que se utiliza para debugging aplicaciones móviles. Y si ejecutas, por ejemplo, ADB log, simplemente genera muchos datos. Puede generar fácilmente hasta 100 líneas por segundo o algo así. Y entonces estamos trabajando en Flipper, una herramienta que te permite inspeccionar diseños en un dispositivo móvil y ver las solicitudes de red de tu aplicación React Native y así sucesivamente. Sin embargo, nos vamos a centrar en esta charla en una característica específica, que son los registros. Y los registros, básicamente muestran la misma salida que acabas de ver de ADB, excepto que lo hemos analizado para que pueda ordenar un filtro.
Ahora, la implementación original que teníamos no es muy fluida. Como que empieza un poco, no mantiene realmente el ritmo, y especialmente si aplicas algunos filtros, se ralentiza. Y además, no envuelve correctamente las líneas, lo cual es realmente molesto si usas registros. Así que pensamos que esto es demasiado lento, y en realidad lo que detectamos, incluso en las compilaciones de producción, si el filtro es un poco complicado, y ya tienes 100,000 líneas de registro en él, entonces una sola pasada de renderizado de nuestro componente React podría consumir fácilmente hasta 250 milisegundos, por lo que terminas con cuatro fotogramas por segundo, lo cual es realmente molesto.
Y entonces pensamos que necesitábamos una mejor implementación, y construimos una. Y esta es la nueva versión, que es mucho más suave, pero que realmente mantiene el ritmo con los datos que llegan a través de ADB, e incluso si estás filtrando, apenas afecta al rendimiento. Y también mejoramos mucho la interacción del usuario, así que tenemos enlaces que se resaltan, las líneas se ajustan automáticamente si cambias el tamaño de la ventana, ese tipo de cosas. Así que hicimos los datos mucho más ricos, e incluso añadimos cosas como poder ordenar en cualquier columna que quieras.
¿Y cómo afectó esto al rendimiento? Resulta que el rendimiento de la nueva implementación fue diez veces más rápido. Y vimos que en Facebook, medimos cuál es el rendimiento, cuántos fotogramas dejamos caer, cuál es la carga de la CPU para nuestros usuarios, y básicamente vimos una caída de fotogramas diez veces menor, y un uso mucho más lento de la CPU. Y si miras el perfil en Chrome, podemos explicar eso. Y entonces las dos secciones de la izquierda son básicamente la situación antigua donde hay mucha CPU en marcha y la mayoría de ella es amarilla. Y el amarillo significa que esto está ejecutando JavaScript código, nuestro código de Flipper. Y en la nueva situación, todavía hay mucho uso de la CPU pero se gasta de manera diferente. Ya no se gasta en la parte amarilla, ya no en el scripting.
Comments