YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Spanish subtitles

← 03-13 Container_Performance

03-13 Container_Performance

Get Embed Code
13 Languages

Showing Revision 5 created 01/04/2016 by QA_SP_4_SP.

  1. Hemos hablado sobre cómo tu código
  2. puede ir lento por el tipo de hardware
    que se ejecuta bajo él.
  3. ¿Recuerdas todo el problema
    de ramificación de punto de flotación?
  4. Bueno, eso no es problema
    para el hardware de hoy.
  5. Hay unos cuantos problemas
    de lo que todavía tienes que preocuparte,
  6. y es el rendimiento de los primitivos
    en el lenguaje que estás usando.
  7. Escoge un algoritmo fundamental,
    como ordenación.
  8. Hay muchas maneras en qué ordenar,
  9. y algunas son mejores que otras,
    según las circunstancias.
  10. Por ejemplo, ordenación rápida
    suele ser más rápida que la burbuja,
  11. excepto cuando tienes menos de mil objetos
  12. o realizas una búsqueda de estos
    en una lista larga ordenada.
  13. La mejor manera de hacer
    esto es con una búsqueda binaria.
  14. Pero es completamente diferente encontrar
    objetos de un despliegue desordenado.
  15. En lugar de comparar cada objeto
    por el valor que estás buscando,
  16. puedes usar un resumen criptográfico
    para encontrarlo inmediatamente.
  17. Todo esto son reglas básicas de estructura
    de datos moderna e informática.
  18. Y menos mal que los lenguajes modernos
    como Java suministran estos contenedores
  19. y algoritmos por ti, para que no tengas
    que reescribir la función Murmur 3 Hash
  20. o una ordenación rápida una y otra vez.
  21. Pero déjame contarte algo.
  22. En todos mis años de programación,
  23. el único problema que corta el rendimiento
    de tu proyecto consistentemente
  24. tiene que ver con el rendimiento
  25. de estos contenedores
    de objetos del lenguaje.
  26. Quiero decir, es impresionante, ¿no?
  27. Java te suministra una implementación
    de una clase de vector
  28. que puedes presionar, explotar, añadir
    y eliminar objetos como quieras.
  29. Pero para conseguir esa flexibilidad tiene
    que usar una estructura de lista enlazada
  30. bajo el capó, que tiene un juega único
    de características de rendimiento.
  31. Mientras solo operes en la parte delantera
    de la lista, es súper rápido,
  32. pero si intentas insertar
  33. o eliminar en otros lugares va a funcionar
    con los peores tiempos posibles.
  34. El punto es que solo porque los sistemas
    subyacentes proporcionan
  35. esos contenedores, no significa
    que tengan buen rendimiento
  36. con respecto a cómo tu programa
    va a usarlos en realidad.
  37. James Sutherland ha publicado una serie
    de microbenchmarks sobre el rendimiento
  38. de estructuras de datos específicas
    proporcionadas por Java y descubrió
  39. que hay algunas diferencias entre
    rendimiento y funcionalidad
  40. que la gente debe conocer.
  41. Por ejemplo, descubrió que el rendimiento
    de la tabla Hash,
  42. era un 22% más rápida
    que el rendimiento de HashMap,
  43. dependiendo de cómo estés realmente usando
    los contenedores en sí mismos.
  44. El punto es este.
  45. ¿Has perfilado las clases
    de contenedor que usas en el código?
  46. ¿Estás seguro de que estás usando
    el contenedor más rápido
  47. para lo que está haciendo tu código?
  48. Ajá, eso es lo que pensaba.
  49. Pero la buena noticia es que puedes ganar
    visibilidad en el rendimiento
  50. de estos contenedores con algunas MPIs
    de perfilamiento útiles en Android.
  51. Veamos si el código de Chris
    resiste nuestro veredicto.