Spanish subtitles

← 03-04 Batching_and_Caching

03-04 Batching_and_Caching

Get Embed Code
13 Languages

Showing Revision 4 created 01/26/2016 by sp8.

  1. Quiero presentarles
    mis dos técnicas favoritas de desempeño,
  2. agrupamiento y almacenamiento.
  3. Como ya lo mencionamos,
    algunas funciones u operaciones
  4. tienen una cantidad específica
    de gastos generales relacionados con ellas
  5. diferentes a los costos de desempeño
    de la operación en sí misma.
  6. Como cargar datos en la memoria
    antes de ejecutarla
  7. o clasificar un grupo de valores
    antes de hacer una búsqueda.
  8. Si se ejecuta varias veces y los múltiplos
    representan un gran número,
  9. estos gastos generales se convertirán
    en una carga para tu app.
  10. El proceso de agrupamiento por lotes
    soluciona este problema de desempeño
  11. eliminando los gastos generales
    por ejecución de estas operaciones.
  12. Es como compartir un auto
    en vez de conducir el tuyo.
  13. Esto se ve con frecuencia en tu código
    cuando tienes que preparar tus datos
  14. antes de operar con él.
  15. Ahora, digamos que la forma más eficaz
    de encontrar un valor
  16. en un conjunto es clasificarlo
    y ejecutar la búsqueda binaria.
  17. Para ser claros, esta en realidad
    no es la forma más eficaz.
  18. Solo síganme porque estoy tratando
    de explicarles algo.
  19. La manera más simple
    de hacer esto es escribir una función
  20. que en conjunto de valores
  21. clasifique el conjunto y luego busque
    para ver si el valor existe en él.
  22. Ahora, esto puede estar bien
    para cierto nivel de desempeño
  23. pero digamos que tienes 10.000 valores
    que quieres probar
  24. y el tamaño del conjunto es de millones.
  25. De repente, estás incurriendo en toneladas
    de gastos generales por prueba
  26. en forma de clasificación.
  27. La respuesta es bastante clara.
  28. Crear la versión clasificada del conjunto
    y luego permitir
  29. que los 10.000 valores sean probados
    para la inclusión después de eso.
  30. Esto es agrupamiento por lotes.
  31. Factorizamos la operación que se repite
    y la hicimos una vez.
  32. Ahora, hay un concepto similar a este
    conocido como almacenamiento en cache
  33. que es la técnica de desempeño
    más importante para comprender
  34. principalmente porque maneja todo
    en la tecnología moderna de computación.
  35. Tu computadora, por ejemplo.
  36. El RAM ofrece un lugar
    para el almacenamiento de la información
  37. que es más rápido de acceder
    para la CPU que el disco duro.
  38. Tomemos, por ejemplo, las redes
    y la internet actual.
  39. En el mundo hay enormes servidores
    llamados centros de datos.
  40. Su único fin es almacenar o guardar
    el contenido que se usa con frecuencia
  41. para que tu PC no tenga que alcanzar
    un servidor ubicado a 12.000 millas
  42. cuando tu amigo
    en Egipto publique una foto.
  43. Bueno, a menos que estés en Egipto.
  44. Pero ya entiendes la idea.
  45. En tu código, el lugar más común
    para encontrar optimizaciones
  46. de almacenamiento es donde los datos
    se calculan varias veces
  47. pero cuyos resultados siempre son iguales.
  48. Por ejemplo, si estás en medio de un bucle
    que estás calculando
  49. los derivados de una matriz
    de cuatro por cuatro
  50. y ese resultado siempre da igual,
    allí desperdicias desempeño
  51. recalculando cada iteración del bucle.
  52. En cambio, calcula y guarda los resultados
    fuera del bucle
  53. y deja que las partes internas del bucle
    referencien el resultado guardado.
  54. El motivo por el que me gustan
    el agrupamiento y almacenamiento
  55. es que cada mejora de desempeño
    que puedas pensar
  56. incluyendo las mencionadas en este curso,
  57. es una variante efectiva
    de estas dos técnicas básicas.
  58. Si de verdad quieres convertirte
    en un ninja del desempeño,
  59. entonces será mejor que seas
    un profesional en el aprovechamiento
  60. del fantástico poder de estas técnicas.
  61. Así que, comencemos.