Resumen técnico del desarrollo de proyectos y exploración de la eficiencia de ejecución de JS

El desarrollo preliminar está completo, necesitamos probarlo más tarde

Una cosa que me preocupó mucho sobre el proceso es la eficiencia de ejecución de JS. Después de cambiar de
lugar
, es 100 veces más rápido que eso explorar las razones específicas.Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

El uso de la estructura de matriz JSON + para almacenar las filas y columnas (tiempo y número) de los datos da como resultado un número diferente de matrices, lo que consume mucho tiempo:

Camino 1

Pruebe el siguiente código ()

console.time('time'); 
	var json={
    
    };
	for(var j=0;j<DEFECT_CNAME.length;j++){
    
    //把缺陷名按顺序放入JSON中  为对应DEFECT_CNAME以便循环输出
		json[DEFECT_CNAME[j]]=new Array();//放入数组
		for (var i = 0; i < PRODUCE_TIME.length; i++) {
    
    
			json[DEFECT_CNAME[j]][i] = new Array();
			for (var x= 0; x < 3; x++) {
    
    
				if(x==0){
    
    
					json[DEFECT_CNAME[j]][i][x] = PRODUCE_TIME[i];
				}else{
    
    
					json[DEFECT_CNAME[j]][i][x] = 0;
				}
			}
		}
	}	

	console.timeEnd('time'); 	
	var j=0;

Los resultados de la ejecución son los siguientes:
Inserte la descripción de la imagen aquí

pérdida de tiempoInserte la descripción de la imagen aquí

Camino 2
console.time('time'); 
	var json={
    
    };
	for(var j=0;j<DEFECT_CNAME.length;j++){
    
    //把缺陷名按顺序放入JSON中  为对应DEFECT_CNAME以便循环输出
		json[DEFECT_CNAME[j]]=new Array();//放入数组
		for (var i = 0; i < 2; i++) {
    
    
			json[DEFECT_CNAME[j]][i] = new Array();
			for (var x= 0; x < PRODUCE_TIME.length; x++) {
    
    
				json[DEFECT_CNAME[j]][i][x] = 0;
			}
		}
	}
	console.timeEnd('time'); 

Los resultados de la implementación son los siguientes: el
Inserte la descripción de la imagen aquí
tiempo Inserte la descripción de la imagen aquí
es de hecho aproximadamente tres veces más rápido, pero obviamente el problema no está aquí

Y tres días después de que se hayan completado todas las tareas de desarrollo, la velocidad es la que se muestra en la figura:Inserte la descripción de la imagen aquí

Recordando el proceso de desarrollo, existe una alta probabilidad de beneficiarse de:
1. La tabla finalmente se indexa en el lado de los datos.
2. Mi consulta en segundo plano está limitada en función de la cantidad de páginas y la cantidad de pantallas. La cantidad de datos que deben procesarse al principio y al final es pequeña. Al principio, verifico 50.000 elementos por turno. ..
3. Se optimiza la instrucción de la consulta, se modifica el SQL y se usa el doble GROUP BY Se coloca el procesamiento preliminar de datos en la consulta, lo que simplifica la lógica del procesamiento de datos en el front y back end.

Resumen técnico:

La prioridad del procesamiento de datos es:

1 、

La optimización de la base de datos es la prioridad absoluta, y los métodos como la subtabla de la base de datos / el índice de adición son los más eficientes y el mejor efecto de optimización;

2 、

Luego están las sentencias SQL para buscar tablas para procesarlas de acuerdo con diferentes necesidades, lo cual es más eficiente que procesar en segundo plano y en primer plano;

3 、

Lo que SQL no puede manejar, la lógica que debe basarse en las necesidades de la operación del usuario, es la necesidad real de usar JAVA / JS frontal y posterior para codificar el código.
Pero hay muchas consideraciones en esta parte, como el problema del objeto gc de JVM para controlar el número de objetos en el programa, la optimización lógica usa menos recursividad, menos if y más use switch, azúcar sintáctico, interfaz policlonal e incluso multihilo en ciertas situaciones ... java Todavía hay mucho margen de mejora en la capacidad de programación

4 、

El JS de front-end no necesita escribir lógica compleja, y el rendimiento del cliente al que se accede por diferentes servicios al cliente es diferente, lo que puede causar una sensación diferente de experiencia del usuario.

5 、

Este desarrollo ha aprendido muchas cosas y, lo que es más importante, ha aprendido muchas formas de resolver problemas. Siento que he crecido. Lo
más importante es que estoy realmente en desarrollo por primera vez y siento lo que es trae mi trabajo. Felicidad, es realmente genial trabajar en él.
Espero que este impulso continúe en el futuro.

Supongo que te gusta

Origin blog.csdn.net/Beatingworldline/article/details/113647751
Recomendado
Clasificación