2010-02-23 37 views
7

Por favor, ¿alguien puede indicarme un buen tutorial que me ayude a hacer que mi código sea rápido y liviano? Me interesa saber qué Método es más rápido y cuándo usar un método en lugar de otro ...
¿Y cómo evaluar si un código es bueno o malo?
Mi lenguaje de programación es C#.Cómo hacer que mi código sea rápido

Hola a todos,
Gracias por sus respuestas, son muy útiles.
Estoy editando mi pregunta para ser más específica, especialmente que la optimización es ilimitada.
Quiero saber cuál es el mejor método en cada condición.
Por ejemplo, usar StringBuilder es mejor que cadena si añado líneas a una cadena ... Solo necesito estas cosas simples.

+1

Probablemente necesite ser más específico. La respuesta genérica es: haga todo lo que tenga que hacer, pero no más que eso. –

+0

StringBuilder no garantiza un aumento de rendimiento al concatenar pequeños (<5) números de cadenas - http://dotnetperls.com/stringbuilder-performance –

Respuesta

18

estar al tanto de sub optimización.

Aunque una función específica es más rápida que otra, esto no cambiará el tiempo de ejecución de la aplicación. Debe comprender qué partes de su código realmente son un problema potencial y centrarse en optimizar estas partes. Tenga en cuenta el O notation de sus funciones y la frecuencia con que se llaman. Para identificar las piezas que necesitan optimización, un perfilador puede ser de gran ayuda.

This question tiene algunos puntos interesantes sobre por qué no debe optimizar hasta que realmente haya una necesidad de hacerlo.

+0

El enlace de la pregunta se borró lol :( – puretppc

2

Si un método siempre fue más rápido que otro, no se molestarían, incluido el más lento.

El único factor invariante cuando se trata de rendimiento es que necesita perfil. Todo se sigue de eso.

+0

No es cierto. Mire todas las formas en que puede archivar las E/S en C#, por ejemplo. Los viejos métodos se quedan para compatibilidad hacia atrás, y hay varias capas de abstracción dependiendo de qué tan bajo o alto nivel desee. – RedFilter

4

Tipo REALMENTE rápido.

+8

Agregaría: (1) eliminar todos los comentarios (2) acortar las variables a una sola letra (3) eliminar los espacios en blanco innecesarios, incluidas las líneas nuevas (4) reutilizar variables para diferentes propósitos ... ;-) –

+2

y yo lo haría agregue ... si no escribe rápido ... use un software de voz a texto: P no me puedo imaginar a un programador usando un software de voz a texto para codificar ... – scatman

5

Implemente básicamente primero, luego pruebe dónde optimizar.

Si está utilizando Visual Studio Profissional puede usar Analyze -> Iniciar el asistente de rendimiento para analizar el rendimiento del método. No estoy seguro de si las otras versiones son compatibles con esta característica, sin embargo, también hay algunas aplicaciones comerciales/gratuitas disponibles ... busque el generador de perfiles (consulte here para obtener una lista).

1

En cuanto a los consejos generales:

  • intenta utilizar la bucles menor cantidad necesaria de código
  • movimiento de bucles cuando sea posible
  • evitar copiar cosas (como cuerdas) en bucles
  • evitar la creación de objetos en bucles
  • Caché cuando esté justificado (generalmente pequeños objetos que tardan mucho tiempo en realizarse), pero asegúrese de que su caché tenga una buena política de eliminación o se convierta en una pérdida de memoria
2

Si te haces un generador de perfiles, te será útil, algunos incluso te darán buenos consejos.

Ejemplo: ANTS Profiler

Por lo general, usted encontrará que la reducción del número de veces que se crea Cuerdas para ser el principal aumento de rendimiento que puede obtener.

Eso y no jugar con el recolector de basura manualmente (a menos que realmente sabe lo que está haciendo)

Este enlace para Java design patterns está demasiado involucrado, no te disuada la palabra de Java existe , puedes usar lo que enseñan para el desarrollo en cualquier idioma.

El tema es, si quiere saber cuándo hacer qué y qué métodos utilizar, etc., de lo que está hablando es de patrones de diseño.

Ojalá alguien me hubiera señalado esto anteriormente en mi carrera.

+0

+1 para ANTS Profiler –

3

Puede obtener muchos consejos sobre esto. Pero tenga en cuenta: La optimización prematura es la raíz de todos los males.

1

Puede compilar su programa en modo nativo para mejorar el rendimiento del tiempo de ejecución.

0

Una de las formas de resolver esto es tener una aplicación de consola donde intente ejecutar códigos discretos uno contra el otro y cronometrarlos. Como here.

3

Objetivo primero para corrección, al lado de la claridad y sólo entonces rendimiento.

Como dice el viejo refrán,

"A nadie le importa lo rápido que se puede calcular la respuesta equivocada"

(en un nivel práctico, sin embargo, utilizar un perfilador)

+0

¿Pero eso no ayuda a QA a encontrar tus errores más rápidamente? :) – RedFilter

7

Claro. Esto es lo que hacemos:

  • Comience el viaje decidiendo cuándo termina el viaje. Establezca objetivos de rendimiento realistas, centrados en el cliente y significativos. (Para la velocidad y el consumo de recursos.)

  • Pruebe a fondo su código con frecuencia para ver si cumple con sus objetivos de rendimiento.

  • Si cumple con sus objetivos de rendimiento, no se preocupe por el rendimiento. Las cosas están bien. Preocuparse por errores, o robustez, o características.

  • Si no está cumpliendo sus objetivos de rendimiento, ejecute un generador de perfiles. Úselo para identificar cuál es el peor código ofensivo. Solo tiene sentido arreglar el peor código; hacer algo que ya es increíblemente rápido y ligero un poco más rápido y ligero no resuelve tu problema de rendimiento.

  • Vuelva a escribir el código lento para que sea más eficaz. (Esta es la parte difícil.) Asegúrese de probarla para asegurarse de que realmente sea mejor.

  • Si a pesar de todos sus esfuerzos no puede hacerlo lo suficientemente bueno, reevalúe cuáles son sus objetivos, o cancele el proyecto y dedique su tiempo a algo en lo que pueda tener éxito.

Sigue iterando hasta que envíes algo.

Cuestiones relacionadas