30/12/2012, 11:58
|
| | | Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 12 años, 6 meses Puntos: 127 | |
Respuesta: No se muestran los datos Una sugerencia, el código C++ que incluya dentro de la condición del for una comprobación de un recurso estático repite el mismo procedimiento una y otra vez haciendo que el procesador salte continuadamente a distintas fases del procesamiento y consumiendo más tiempo. Sería ideal quizás que incluyeras
double size = sizeof(res); // o int, según el tamaño
for(k = 0 ; k < res; k++){}
Lo cual sería una sola operación de cálculo simple numérico que setearía los flags y consumiría menos ciclos de proceso. (lo escribo tal cual, no lo comprobé)
mov eax, dword ptr [size]
cmp eax, dword ptr [k] // suponiendo que k es un puntero
jle dir
Lo que tienes puesto probablemente salte a otro punto del código para repetir la operación de comprobación nuevamente teniendo que introducir los mismos datos en el stack, etc.
mov eax, dword ptr [k]
add eax, 1
push loquesea
...
call/jmp sizeof // llamada adicional innecesaria
mov eax, dword ptr [size]
...
Como cuestión adicional se me ocurriría que el tipo de dato devuelto por sizeof es un tipo numérico sin signo (size_t), no sé hasta qué punto el typecasting puede consumir recursos a la hora de convertir ese tipo a un entero normal
size_t size = sizeof(res);
int size_int = (int) size;
Quizás vendría bien que mirases eso para comprobar la efectividad.
Un saludo.
__________________ 21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
Última edición por dontexplain; 30/12/2012 a las 12:42 |