¿Qué porcentaje del software que se está construyendo en estos días es crítico para el rendimiento? ¿Cómo ha cambiado eso con el tiempo?

Además de las aplicaciones web y los problemas de escalabilidad creados por el cambio a los servicios centralizados, una forma en que esto ha cambiado con el tiempo ha sido el resultado de la Ley de Moore que efectivamente terminó con las velocidades de procesamiento de un solo núcleo. Una razón por la que solía ser legítimo considerar que el rendimiento rara vez importaba era que 1-2 años después, todo sería el doble de rápido. Los lenguajes que se estaban desarrollando y las teorías sobre cómo pensar en el diseño de software y hacer compensaciones de rendimiento fueron moldeados por el ritmo continuo de la mejora del hardware.

Entonces, en lo que respecta a la programación de un solo subproceso, terminamos en un lugar donde las computadoras son bastante rápidas, pero ya no se están acelerando en ningún lugar cerca de la velocidad anterior. Esto ha hecho que el rendimiento sea más importante hoy de alguna manera de lo que solía ser: aunque las computadoras son más rápidas, la expectativa de futuras mejoras gratuitas se ha ido.

Una buena cantidad es crítica para el rendimiento.
Redes. En la pila o en el hardware, nuevamente, la ruta del paquete. Esto también incluye redes de almacenamiento. Cisco, Juniper, Brocade, etc.
Virtualización. Es importante manejar bien los ciclos de la CPU y mantener altos los IOPS. VMware, Amazon, etc.
Almacenamiento. Todos los tipos. EMC, HP, Dropbox, etc.
Seguridad. Desde cheques hasta husmeadores, Symantec, ArcSight, etc.
Computación en la nube. De un DFS a otras áreas centrales.

y muchos más dominios, incluidos los sistemas operativos (Apple, Microsoft, Oracle \ Sun), médicos (Agilent), sistemas integrados (IBM y otros), ciertas partes de Internet (coincidencia de anuncios y búsquedas en muchas empresas, coincidencia de prefijos de Quora, lotes en Google , Facebook, etc.), semiconductores (Broadcom, etc.)

Cualquier ciclo económico que funcione bien obtiene más visibilidad.
Se ha reducido en tamaño y visibilidad, ya que las principales empresas y startups visibles tienen un mayor número de trabajos con otros requisitos y Apple con su diseño se ha convertido en la empresa de computadoras número 1.

El rendimiento y la escalabilidad son dos cosas separadas y, en la mayoría de los casos, las personas mezclan los dos cuando describen su arquitectura y / o problemas. Los ejemplos que ha citado en su pregunta (juegos, etc.) están realmente relacionados con el rendimiento (aunque existe un aspecto de escalabilidad en el caso de juegos en línea para varios jugadores, por ejemplo); en otras palabras, cuando juegas un juego en Wii, el hardware y el software en el dispositivo es todo lo que tienes para obtener la experiencia que estás buscando. Cuando hablamos de escala web , no se trata tanto de rendimiento como de escalabilidad. Si perfila las páginas de Twitter o Facebook usando las Herramientas para desarrolladores de Chrome, o Firebug en FF, notará que los números están en el rango esperado para generar y servir ese tipo de contenido (No científicamente, Twitter tardó de 3 a 7 segundos en mostrarse mi página de inicio y Facebook, alrededor de 2-3 segundos.) Lo que importa aquí es la escalabilidad: poder atender las solicitudes concurrentes de millones de usuarios. No digo que el rendimiento no sea importante: escuché que Amazon tiene un requisito estricto de que todas las consultas deben regresar dentro de los 100 ms (¡este número podría haberse reducido ahora!), Sin excepciones, pero lo que escuchas últimamente es más sobre la escalabilidad aspecto de la arquitectura.

More Interesting

¿Cuáles son los principios fundamentales detrás de ejecutar una máquina virtual de manera eficiente?

Obtuve admisiones de UW-Tacoma y la Universidad de Santa Clara para MS en CS y SE, respectivamente. ¿Cuál debería elegir?

¿Qué tan difícil es cambiar a gigantes de software como Amazon o Microsoft después de 2-3 años de experiencia en una empresa de redes como Arista Networks?

¿Qué tan genial es ser un desarrollador de Python?

¿Cómo se programaron temas como el tema 'Monty on the Run' en los años 80?

¿Por qué el método Java Vector's contiene () parece no llamar a mi método igual () personalizado?

Cuando ejecuto una consulta con muchas columnas, aparece el error "Tamaño de memoria permitido de 33554432 bytes agotados (intenté asignar 512 bytes)". ¿Cuáles son algunas soluciones?

¿Qué es un buen modelo de datos para una cartera de acciones?

¿El trabajo de software es una dificultad para las mujeres?

¿Puedo usar cualquier lenguaje de programación para codificar mis propias cosas sin cargo?

¿Qué tan bueno es el maestro de ingeniería de software de la Universidad de Santa Clara?

¿Es una buena idea trabajar en un proyecto de código abierto existente como mi tesis principal?

¿Cuáles son algunas formas en que un ingeniero de software puede ofrecer voluntariamente su trabajo calificado?

¿Por qué la ley ignora el costo y la propiedad de la electricidad cuando se considera la funcionalidad del software de la computadora?

¿Por qué la leyenda urbana dice que Steve Jobs, Jeff Raskin y el resto del equipo 'robaron' de Xerox?