C sharp - Tiempo lectura/escritura array

 
Vista:

Tiempo lectura/escritura array

Publicado por Tei (3 intervenciones) el 15/01/2007 11:25:05
Hola, alguien podría decirme porque tarda más tiempo la lectura de un array que la escritura. Me explico: tengo 2 bucles for con el mismo número de iteraciones (un número muy elevado) y en un bucle realizo la lectura de las posiciones de un array y se lo asigno a una variable (var = matriz[i]) y en el otro bucle escribo en las posiciones de la matriz el valor de una variable (matriz[i] = var).

Sólo realizo esas operaciones (una en cada bucle) y me gustaría que alguien me explicase porque tarda más (bastante más) en leer del array (var = matriz[i]) que en escribir en el array (matriz[i] = var).

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:Tiempo lectura/escritura array

Publicado por Yamil Bracho (1164 intervenciones) el 15/01/2007 19:44:37
Puedes mostrar algo mas del codigo qu estas usando...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tiempo lectura/escritura array

Publicado por Tei (3 intervenciones) el 15/01/2007 22:35:59
/* Este código es una especie de Benchmark de Memoria. Con él pretendo reservar cierto tamaño de RAM (100MB) y realizar su escritura secuencial para luego medir la tasa de transferencia en MB/segundo */

byte var = 1;
//NUMMEGAS es una constante entera que vale 100.
byte[] matriz = new byte[NUMMEGAS * 1024 * 1024];
DateTime crono1 = DateTime.Now;
for (int i = 0; i < (NUMMEGAS * 1024 * 1024); i++)
matriz[i]=var;
DateTime crono2 = DateTime.Now;
TimeSpan ts = crono2 - crono1;
double seg = ts.TotalSeconds; //segundos que tarda en escribir los 100MB

/* Éste código es otro método del Benchmark de Memoria en el que se pretende medir la tasa de trasferencia en MB/segundo para la lectura secuencial de memoria. Para ello reservo la misma cantidad de RAM (100MB) y la leo secuencialmente */

byte var;
byte[] matriz = new byte[NUMMEGAS * 1024 * 1024]; //reservo 100MB de memoria
DateTime crono1 = DateTime.Now;
for (long i = 0; i < (NUMMEGAS * 1024 * 1024); i++)
var = matriz[i];
DateTime crono2 = DateTime.Now;
TimeSpan ts = crono2 - crono1;
double seg = ts.TotalSeconds;

/* El caso es que me tarda más en escribir, que en leer. Para la escritura tarda unos 911 ms y para la lectura 1321ms. Y me gustaría que alguien me diese una explicación. */
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar