Red de conocimiento informático - Material del sitio web - Cómo optimizar la programación y codificación JAVA y mejorar el rendimiento de JAVA

Cómo optimizar la programación y codificación JAVA y mejorar el rendimiento de JAVA

Al utilizar algunas herramientas auxiliares para encontrar cuellos de botella en el programa, puede optimizar el código en la parte del cuello de botella. Generalmente hay dos opciones: optimizar el código o cambiar el método de diseño. Generalmente elegimos lo último, porque no llamar al siguiente código puede mejorar el rendimiento del programa más que llamar a algún código optimizado. Un programa bien diseñado puede optimizar el código y así mejorar el rendimiento. A continuación se proporcionarán algunos métodos y técnicas que se utilizan a menudo en el diseño y codificación de programas JAVA para mejorar el rendimiento de los programas JAVA. 1. Generación y cambio de tamaño de objetos. Un problema común en la programación JAVA es que las funciones proporcionadas por el propio lenguaje JAVA no se utilizan en su totalidad, lo que a menudo genera una gran cantidad de objetos (o instancias). Debido a que el sistema no solo necesita tiempo para generar objetos, también puede tomar tiempo para recolectar basura y procesar estos objetos más adelante. Por tanto, generar demasiados objetos tendrá un gran impacto en el rendimiento del programa. Ejemplo 1: con respecto a String, StringBuffer, + y append, el lenguaje JAVA proporciona operaciones en variables de tipo String. Pero si se usa incorrectamente, afectará el rendimiento del programa. Por ejemplo, la siguiente declaración: Stringname=newString("HuangWeiFeng");System.out.println(name+"ismyname"); Parece muy simplificado, pero no lo es. Para generar código binario, se deben realizar los siguientes pasos y operaciones: (1) Generar una nueva cadena newString (STR_1); (2) Copiar la cadena (3) Cargar la constante de cadena "HuangWeiFeng" (STR_2); 4) Llame al constructor de la cadena (Constructor); (5) Guarde la cadena en la matriz (comenzando desde la posición 0) (6) Obtenga la variable de salida estática de la clase java.io.PrintStream (7) Generar nuevo; variable de búfer de cadena newStringBuffer(STR_BUF_1); (8) Copie la variable de búfer de cadena (9) Llame al constructor del búfer de cadena (10) Guarde el búfer de cadena en la matriz (desde la posición 1 Inicio); STR_1 como parámetro, llame al método append en la clase StringBuffer; (12) Cargue la constante de cadena "ismyname" (STR_3) (13) Con STR_3 como parámetro, llame al buffer de cadena El método append en la clase (StringBuffer); ; (14) Ejecute el comando toString para STR_BUF_1; (15) Llame al método println en la variable out para generar el resultado. Se puede ver que estas dos simples líneas de código generan cinco variables de objeto STR_1, STR_2, STR_3, STR_4 y STR_BUF_1. Las instancias de estas clases generadas generalmente se almacenan en el montón. El montón debe inicializar las superclases y las instancias de todas las clases y, al mismo tiempo, llamar al constructor de la clase y de cada superclase. Estas operaciones consumen muchos recursos del sistema. Por tanto, es completamente necesario limitar la generación de objetos. Después de la modificación, el código anterior se puede reemplazar con el siguiente código.

StringBuffername=newStringBuffer("HuangWeiFeng"); System.out.println(name.append("ismyname.").toString()); (2) Copie la variable del búfer de cadena; (3) Cargue la constante de cadena "HuangWeiFeng" (STR_1); (4) Llame al constructor del búfer de cadena (Constructor); desde la posición 1); (6) Obtenga la variable de salida estática de la clase java.io.PrintStream; (7) Cargue STR_BUF_1; (8) Cargue la constante de cadena "ismyname" (STR_2); , llame al método append en la instancia de StringBuffer; (10) Ejecute el comando toString (STR_3) para STR_BUF_1 (11) Llame al método println en la variable out para generar el resultado; Se puede ver que el código mejorado solo genera cuatro variables de objeto: STR_1, STR_2, STR_3 y STR_BUF_1. Es posible que sienta que generar un objeto menos no mejorará en gran medida el rendimiento del programa. Pero el fragmento de código 2 a continuación se ejecutará dos veces más rápido que el fragmento de código 1. Porque el fragmento de código 1 genera ocho objetos y el fragmento de código 2 solo genera cuatro objetos. Segmento de código 1: Stringname=newStringBuffer("HuangWeiFeng");name+="ismy";name+="name"; Segmento de código 2: StringBuffername=newStringBuffer("HuangWeiFeng");name.append("ismy"); ("name.").toString(); Por lo tanto, hacer un uso completo de las funciones de la biblioteca proporcionadas por JAVA para optimizar el programa es muy importante para mejorar el rendimiento del programa JAVA. Los puntos principales a tener en cuenta son los siguientes aspectos ( 1) En la medida de lo posible, utilice variables estáticas (StaticClassVariables)

Si las variables de la clase no cambian con sus instancias, se puede definir como una variable estática, de modo que todas sus instancias puedan compartir esta variable. . Por ejemplo: publicclassfoo{ SomeObjectso=newSomeObject();} se puede definir como: publicclassfoo{ staticSomeObjectso=newSomeObject();} (2) No realice demasiados cambios en los objetos generados. Para algunas clases (como la clase String), es mejor regenerar una nueva instancia de objeto que modificar la instancia de objeto ya generada. Ejemplo: Stringname="Huang";name="Wei";name="Feng"; el código anterior genera tres instancias de objeto de tipo String. Los dos primeros requieren inmediatamente que el sistema realice la recolección de basura. Si desea concatenar cadenas, el rendimiento será aún peor, porque el sistema no tendrá que generar más variables temporales para esto, como se muestra en el Ejemplo 1 anterior. (3) Al generar un objeto, asígnele un espacio y un tamaño razonables. Muchas clases en JAVA tienen sus tamaños de asignación de espacio predeterminados. Para la clase StringBuffer, el tamaño de espacio asignado predeterminado es de 16 caracteres. Si el tamaño del espacio de StringBuffer utilizado en el programa no es de 16 caracteres, entonces se debe realizar una inicialización correcta. (4) Evite generar objetos o variables que se utilicen poco o que tengan ciclos de vida cortos. Para este caso, se debe definir un grupo de búfer de objetos. Se cree que la sobrecarga de administrar un grupo de búfer de objetos es mucho menor que la sobrecarga de generar y reciclar objetos con frecuencia. (5) Inicialice solo dentro del alcance del objeto. JAVA permite definir e inicializar objetos en cualquier parte del código.

De esta forma, la inicialización solo se puede realizar dentro del alcance del objeto. Ahorrando así gastos generales del sistema