Performance Programming
1 - Definicion y Filosofia 2 - PP en Rails 3 - Performance Tuning
Performance Tuning VS Performance Programming Feature vs Filosofía de programacion. Uno se aplica bajo demanda y el otro en todo momento. Costo de dejar todo para el final. “premature optimization is the root of all evil”
Performance Programming “the best code is no code at all” Al menos 6 tecnicas a tener en cuenta en todo codigo escrito. mejorar requests indices mejorar consultas memoizing evitar metaprog derivar a bkg jobs
Requests TCP Slow Start y HS (40 ms promedio conn tcp.) El cuello de botella esta en la cantidad de requests. Minimizar cantidad de requests!
Indices Pensar en el indice de un libro. Acceso directo vs Actualizacion y Insercion. Regla general: indexar columnas por las cuales se busca. Foreign Keys, ID y claves que se usen en nuestra app. Ej Usuarios y tel.
Consultas a la BD Hacer EL! Envolver en transacciones. Select cuando sea necesario. Ojo con blank?
Memoize
La metaprogramacion es lenta Cuidado al usarla dentro del request life cycle. Lo mas complicado es codigo que define codigo. Porque debe pasar por tokenizing, parsing y ejecucion. Se aplica a todo, tanto definit metodos como usar metodos que definen metodos via method missing. Por ejemplo find_by….
Derivar a BKG JOBS Nada costoso puede ir dentro del RLC Lease Procesamiento de imagenes, archivos, requests a Web services, operaciones costosas, envio de emails.
Performance Tuning Invertir tiempo en serio. Usar herramientas de profiling para detectar cuello de botella. Salvo que fuera muy evidente, si no no intentar hacerlo a mano. Caching. Minificacion de CSS y JS. CDN.