2010-07-12 14 views
8

Para los lectores habituales: La saga ™ continúa ...¿Qué herramientas puedo usar para determinar los requisitos de hardware de mi aplicación?

Mi aplicación funciona muy bien en mi máquina de desarrollo - que fue comprada (hace 5 años) como una plataforma de juegos bastante buena. Como tal, es de 64 bits, tiene una velocidad de reloj de 2.2GHz y tiene 2GB de memoria.

Las máquinas en el trabajo, sin embargo, son computadoras estándar de la oficina de problemas de Dell y realmente tienen dificultades incluso para iniciar mi aplicación, y mucho menos ejecutarla.

(Explicación ... Me imagino a la gente gritándome: "¿Qué diablos estás haciendo para necesitar una especificación así?" Bueno, estoy haciendo un montón de análisis de imagen y generación de audio en tiempo real. Así que allí.)

Nuestro equipo tiene el presupuesto para comprar una laptop dedicada (debe ser portátil) para ejecutarla. Así que ahora me han encargado la generación de una especificación mínima requerida.

¿Qué herramientas puedo usar para determinar la especificación más baja capaz de ejecutar mi aplicación cómodamente?

Actualización: Las respuestas hasta ahora, aunque útiles, se centran más en las alternativas a la creación de perfiles. Así que he puesto una recompensa para ver si hay algún software que pueda hacer este tipo de cosas.

+0

Siempre puedes intentar optimizar un poco tu código para que se ejecute en una máquina de especificación inferior. De lo contrario, solo tendrá que probar su aplicación en varias máquinas candidatas para tener una idea de lo que necesita para obtener un rendimiento aceptable. –

+0

Gracias Paul. Tomé la optimización en la medida en que mis limitadas habilidades de desarrollo me permitirán. (Si tiene curiosidad, no dude en consultar la fuente. ¡Estaría muy agradecido por cualquier ayuda!) La última opción es mi copia de seguridad, pero como compraremos una máquina dedicada, sería bueno obtenerla bien la primera vez. –

+1

No sorprende que ... las PC de oficina estándar de Dell ejecutan Celerons con memoria RAM lenta. Si funciona bien en las especificaciones anteriores, ¿no puedes usar eso como línea de base? Obviamente, una computadora portátil tendrá problemas de calor si está ejecutando cálculos pesados ​​sobre ella durante largos períodos de tiempo, pero el hardware es bastante barato hoy en día. Simplemente no obtenga un modelo de ahorro de energía. ;) – cbednarski

Respuesta

5

¿Tiene acceso a un buen generador de perfiles? Creo que valdría la pena entender los cuellos de botella de rendimiento en su aplicación. Si resulta que su aplicación está vinculada a la CPU, entonces obviamente querrá considerar derrochar en un procesador de alta gama. ¿La aplicación tiene varios subprocesos? Si es así, ¿su aplicación se está aprovechando de múltiples procesadores o se está serializando debido a la sincronización?

Si la aplicación está vinculada a IO, tal vez debería considerar obtener una unidad SSD.

¿Quizás la aplicación está pasando demasiado tiempo paginando? etc ...

Si tiene acceso a Visual Studio 2010 Ultimate, le recomiendo que consulte Concurrency Profiler. Le ayudará a visualizar lo que está sucediendo en su programa e identificar los cuellos de botella de rendimiento. Le mostrará dónde está gastando su tiempo: esperar en IO, administración de memoria, etc. Si bien esta herramienta ciertamente no le indicará cuáles son los requisitos mínimos de hardware, le dará una buena idea de las mejoras de hardware que le ayudarán su aplicación tiene un mejor rendimiento. Si no tiene VS2010, probablemente podría realizar un análisis similar con cualquier buen perfilador. Lo mejor de Concurrency Visualizer es que se enfoca en exponer problemas de desempeño simultáneos y de subprocesos múltiples.

+0

Actualmente solo tengo Professional, pero si puedo actualizarlo lo consideraré seriamente. Las herramientas de perfilado de rendimiento se ven realmente útiles. ¿No creo que puedas recomendar otros perfiladores? –

+0

Hola Tom, Ojalá la actualización no fuera tan cara :(Es una pena. Una gran opción gratuita es "xperf". Viene con las herramientas de análisis de rendimiento de Windows (disponible aquí: http: // msdn .microsoft.com/es-es/performance/cc825801.aspx). xperf es increíblemente poderoso, pero tiene una curva de aprendizaje muy pronunciada. No tiene tanta mano como los perfiles de VS. También parece que hay una analizador de código abierto llamado "Sleepy", disponible aquí http://www.codersnotes.com/sleepy/, pero nunca lo he usado. – Matt

1

Nada supera la prueba en el mundo real ...

intente ejecutar la aplicación en una variedad de hardware y llegar a un mínimo recomendado en base a su percepción del desempeño aceptable.

Nota: a menudo hay una gran diferencia entre los requisitos de hardware mínimo absoluto y los requisitos mínimos aceptables recomendados (que parece que es lo que realmente desea).

0

Una opción es crear una serie de máquinas virtuales con diferentes configuraciones de sistema y probar su aplicación en cada una (lo deseará hacer en una máquina de alto rendimiento). De esta forma, puede ajustar la cantidad de memoria que tiene la VM, el tipo de CPU, etc. y simular la prueba del software en una variedad de sistemas. Mientras prueba, puede usar el Administrador de tareas de Windows para ver cuánto de la CPU y la memoria del host utiliza su aplicación. Para una experiencia cómoda, deseará que su aplicación entre en la memoria física tanto como sea posible (más aproximadamente 1-1.5 GB para el sistema operativo y otros servicios en segundo plano).

También tenga en cuenta si su aplicación tiene alguna característica que requiera soporte de hardware (DirectX 11, CUDA, etc.) y asegúrese de incluir eso en sus requisitos de hardware.

0

Por la información breve, no parece que su PC tenga una especificación particularmente alta. ¿Qué especificaciones tienen las máquinas Dell que ha visto que corren despacio?

Probaría con otra PC en caso de que las máquinas de "trabajo" no sean más que malas compilaciones de software (supongo que controladores de disco de disco XP estándar, etc.).

En general, no recomendaría ir por la ruta de VM ya que realmente solo sirve para restringir el uso de RAM. Sin embargo, si necesita verificar SO/Service Packs alternativos, las VM son una buena forma de hacerlo.

Por último, dice que la aplicación tarda en cargarse, ¿qué está haciendo con la carga? Puede ser una idea mirar los monitores de rendimiento para ver si está restringido el disco, la RAM o la CPU. Use Google para encontrar contadores útiles para monitorear cada uno.

+0

Con respecto a la especificación, mi PC dev no es tan alta especificación para los estándares modernos: AMD64 de doble núcleo corriendo a 2.21GHz con 2GB de (lo que estoy suponiendo que es) memoria DDR2. Las computadoras de trabajo parecen ser la mitad de esto: es decir, un núcleo de 32 bits funcionando a 1 GHz y generalmente con 1 GB de RAM. –

+0

La CPU de 1Ghz en una máquina de escritorio va a ser muy antigua, supongo que muy probablemente sea un Pentium 3 que probablemente ni siquiera muestre la mayoría de las páginas web flash modernas. Lo único que verificaría es usar el monitor de rendimiento si el uso de RAM es alto y por lo tanto está comenzando a intercambiarse en las máquinas de RAM de 1 Gb. Realmente 1Gb de RAM es el mínimo adecuado para una aplicación no especializada, por lo que debe tratar de encajar en eso. En la CPU solo busque su CPU (y equivalentes de Intel) como mínimo, consulte Toms Hardware para calcular los equivalentes en Intel, dispositivos móviles, etc. –

+0

O en una netbook para PC. – Arafangion

0

Perdóname por decir lo b ***** g obvio, pero:

utilizar su software para comprobar los requisitos de hardware para su software.

No entiendo por qué la especificación de su máquina de desarrollo no es simplemente la especificación requerida para la computadora portátil que propone comprar. Pero si eso no es lo suficientemente bueno por alguna razón, ejecute su software en algún hardware con otras especificaciones. Podría, por ejemplo, sacar 1GB de RAM de su máquina de desarrollo para ver cómo van las cosas con menos memoria disponible.

Hay una gran cantidad de software de evaluación comparativa disponible para todo tipo de tareas. Por ejemplo, LINPACK se usa mucho para comparar supercomputadoras. El error en todos estos puntos de referencia comunes, y en el enfoque en general, es que solo brindan buena información sobre cómo una computadora ejecuta el punto de referencia. La transformación de los resultados de referencia en predicciones del rendimiento del hardware con su software es más un arte que una ciencia. En las organizaciones mundiales de supercomputación, comparan sus propias aplicaciones clave en nuevas plataformas antes de comprar.

Cuestiones relacionadas