Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/12/2009, 20:27
Avatar de Peterpay
Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 5 meses
Puntos: 87
Respuesta: Archivos de broma con C#

Aunque siendo sincero se me hace ocioso hacer esto involucra que le des una ojeada a algunos temas

viendo tu codigo que se puede optimizar mucho:

1.- haces 9999999999999999999999999999999 veces la escritura pero lo peor de todo es que es sincrona encontes el streamwriter va y viene y hasta q no termine la escritura actual regresa entonces pues desperdicias procesador.

te dejo tu codigo optimizado de cierto modo (no es lo mas optimo pero puedes empezar por ahi)

Código:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics.CodeAnalysis;

namespace CreaArchivo
{
    class Program
    {
        private const string FILE_NAME = "Archivo.txt";
        public static BinaryWriter sw;

        public static void data(IAsyncResult x)
        {
             sw.BaseStream.EndWrite(x);            
        }

        static void Main(string[] args)
        {
            byte [] datos=Encoding.ASCII.GetBytes((new string('A', 45000000)));

            if (File.Exists(FILE_NAME))
            {
                Console.WriteLine("{0} ya existe.", FILE_NAME);
                Console.ReadKey();
                return;
            }
            FileStream fs=new FileStream(FILE_NAME,FileMode.Create);

            sw = new BinaryWriter(fs);
            
                for (long i = 1; i <= 30; i++)  // En lugar de escribir 9999999999999999 pocos bytes
                {                                          // Mejor escribo 45000000 de letras A 30 veces 
                    sw.BaseStream.Flush();
                    sw.BaseStream.BeginWrite(datos,0,datos.Length,new AsyncCallback(data),sw);//sw.Close();                    
                }
                sw.Close();
        }

    }
}
aca funciona con 200 mb de memoria hasta 400 de pico (todavia mas optimizables) y en 30 seg o menos genera 1.2 gb ahora sabras tu que tanto te involucras en la cuestion de modelo asincrono de procesos (que es lo interesante de esto)
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5