Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Velocidad en programa

Estas en el tema de Velocidad en programa en el foro de C/C++ en Foros del Web. Hola, estoy diseñando un programa que esta formado por multiples bucles en los que se hacen operaciones con arrays tridimensionales. Unas de las operaciones que ...
  #1 (permalink)  
Antiguo 17/07/2008, 03:05
 
Fecha de Ingreso: mayo-2008
Mensajes: 10
Antigüedad: 16 años
Puntos: 0
Velocidad en programa

Hola, estoy diseñando un programa que esta formado por multiples bucles en los que se hacen operaciones con arrays tridimensionales. Unas de las operaciones que se llevan a cabo dentro de los bucles es:

for ( i=1; i < ia; i++ ) {
for ( j=1; j < JE; j++ ) {
for ( k=1; k < KE; k++ ) {

curl_h = ( hz[i][j][k] - hz[i][j-1][k] - hy[i][j][k] + hy[i][j][k-1]);
}}}

Cambie el programa para utilizar arrays unidimensionales, pero acceder como si fueran matrices. El bucle anterior con el nuevo diseño seria:

for ( i=1; i < ia; i++ ) {
for ( j=1; j < JE; j++ ) {
for ( k=1; k < KE; k++ ) {

curl_h = hz.array[i+(j*hz.X)+(k*hz.X*hz.Y)] - hz.array[i+((j-1)*hz.X)+(k*hz.X*hz.Y)] - hy.array[i+(j*hy.X)+(k*hy.X*hy.Y)] + hy.array[i+(j*hy.X)+((k-1)*hy.X*hy.Y)];
}}}

Mi pregunta es si es normal que la velocidad de la ejecucion del programa llegue a multiplicarse entre 4 y 5 veces. Gracias.
  #2 (permalink)  
Antiguo 17/07/2008, 03:34
Avatar de aloqui  
Fecha de Ingreso: diciembre-2007
Mensajes: 973
Antigüedad: 16 años, 5 meses
Puntos: 24
Respuesta: Velocidad en programa

Yo diría que no es normal.
Internamente los compiladores transforman los arrays multidimensionales en unidimensionales ya que la memoria es unidimensional.

La única explicación que se me ocurre es que estes compilando con flags de depuración (o sin flags de optimización) y que el compilador incluya para cada indice de un array una funcion de comprobación de límites (para cercionarse de que no accedes a un índice fuera del array). De ése modo en los arrays multidimensionales dicha comprobación se hace 3 veces y en los arrays unidimensionales solo 1 vez.
__________________
Grupos de Música
Pop Music Stars
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:21.