
16/06/2008, 09:51
|
| | Fecha de Ingreso: julio-2006
Mensajes: 150
Antigüedad: 18 años, 7 meses Puntos: 0 | |
Optimizacion de tiempos Como les he venido comentando, estoy trabajando con serializacion de Hashtables, la serializacion es mas lenta mientras tamaño tiene el objeto que vas a deserializar por lo que decidi picar la tabla de hash en varios pedazo lo que hace que sea mas rapido obteniendo un rendimiento que mejoro desde 4 mins a 1,24 mins pero para efectos de lo que estoy trabajando aun es mucho tiempo podrian uds ayudarme a optimizar un poco mas este codigo que adjunto a ver si ven algo que yo no veo.
//Serializacion
System.Console.WriteLine("Inicio de Serializacion nueva " + DateTime.Now);
foreach (DictionaryEntry key in a)
{
campos camp = new campos();
camp.clav = key.Key.ToString();
camp.posi = (List<int>)key.Value;
contador++;
listaCamp.Add(camp);
if (contador == 12500)
{
arch++;
Stream stream = new FileStream("D:\\Ernesto\\Pruebas\\prueba" + arch + ".txt", FileMode.OpenOrCreate, FileAccess.Write);
formatter.Serialize(stream, listaCamp);
stream.Close();
contador = 0;
listaCamp.Clear();
}
}
System.Console.WriteLine("Fin Serializacion Nueva " + DateTime.Now);
BinaryFormatter bs = new BinaryFormatter();
//Deserializacion
System.Console.WriteLine("Inicio Deserializacion Nueva " + DateTime.Now);
for (int i = 1; i < 400; i++)
{
Stream stream1 = new FileStream("D:\\Ernesto\\Pruebas\\prueba" + i + ".txt", FileMode.Open, FileAccess.Read);
List<campos> lista = new List<campos>();
lista = (List<campos>)bs.Deserialize(stream1);
for (int j = 0; j < lista.Count; j++)
{
String clavecita = lista[j].clav;
List<int> pos = new List<int>();
pos = (List<int>)lista[j].posi;
b.Add(clavecita,pos);
}
System.Console.WriteLine("Archivo # " + i + " " + DateTime.Now);
}
System.Console.WriteLine("Fin Deserializacion Nueva " + DateTime.Now); |