• Sábado 12 de Julio de 2025, 14:13

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - JuanK

Páginas: 1 ... 59 60 [61] 62 63 ... 231
1501
C# / Re: Quicksort C#
« en: Miércoles 18 de Octubre de 2006, 14:22 »
Este post es de ahce mas de dos años, no vale la pena revivirlo.

1502
VB .NET / Re: Como Leer Los Arrays
« en: Miércoles 18 de Octubre de 2006, 05:58 »
hay varias opciones para buscar el dato.

1- recorrerlo con un for o un foreach
2- usar el metodo Find
3- ordenarlo con el metodo Sort y luego usarl labusyqeda binaria.

Todo de pende de lo que necesites, el volumen de datos y la velocidad necesaria tanto para el desarrollo como para la busqueda.

1503
Programación de Archivos del Sistema / Re: Programacion De Un Driver
« en: Miércoles 18 de Octubre de 2006, 02:02 »
Cita de: "Eternal Idol"
Si buscas DDK en este foro encontraras algo de informacion ... es un camino largo y muy duro ... la mayoria no lo termina ...
O ni empieza  :losiento:

Espero algun dia de verdad dedicarle tiempo.

1504
C# / Re: Performance
« en: Miércoles 18 de Octubre de 2006, 00:01 »
:lol:

Bie gracias a la ayuda e una persona del foro de Microsoft he llegado a esta solucion, por cierto muy sencilla e ingeniosa, asi obtuve los mismo tiempos que en mi implementacion anterior cambiando una sola linea de la implenentacion original, y bueno adicionando un metodo extra a las clases derivadas de BaseColor

Cree este metodo en la clase base

Código: Text
  1. public abstract BaseColor CreateNew();
  2.  

y en cada una de las clases que heredan de ella desde luego hubo que implementarlo ej:

Código: Text
  1. class Color8
  2. {
  3.    ...
  4.    ...
  5.    public override BaseColor CreateNew()
  6.    {
  7.       return new Color8();
  8.    }
  9. }
  10.  


Y finalmente el metodo quedo asi:
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
        /// <summary>Extrae de un BMP sus colores en forma de un array de color compatible de imagen JKI</summary>
        /// <param name="bmp">Mapa de bits del cual se estraeran los colores</param>
        /// <returns>Array de colores extraidos del Bitmap</returns>
        public T[] ColorArrayDesdeBMP(Bitmap bmp)
        {
            T[] colorArray = new T[bmp.Height * bmp.Width];
            BitmapData bmpd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, bmp.PixelFormat);
            IntPtr pbmp = bmpd.Scan0;
            byte bytesPorPixel = 0;
            int j = 0;
            T factory = new T();

            bytesPorPixel = (byte)((int)imagen.informacionBase.ProfundidadColor / 8);
            int anchoEnBytes = bmp.Width * bytesPorPixel;
            int paddedBytes = ((anchoEnBytes + 3) & ~3) - anchoEnBytes;
            int anchoBytesPadd = anchoEnBytes + paddedBytes;
            byte[] bmpArr = new byte[bmp.Height * anchoBytesPadd];
            System.Runtime.InteropServices.Marshal.Copy(pbmp, bmpArr, 0, bmp.Height * anchoBytesPadd);
            bmp.UnlockBits(bmpd);
            for (int i = 0; i < bmpArr.Length; i += bytesPorPixel)
            {
                colorArray[j] = (T)factory.CreateNew();

                colorArray[j++].FromBMPColorArray(bmpArr, i);
                if (j % bmp.Width == 0)
                    i += paddedBytes;
            }
            return colorArray;
        }<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Genial.

1505
C# / Re: Performance
« en: Martes 17 de Octubre de 2006, 19:44 »
:ph34r:

He solucionado el problema de velocidad  :)  &lt;_&lt;

Pero desde luego no fue precisamente una solucion muy limpia, por el contrario bastante sucia.

Como el problema es por usar generics decidi reducir su uso al maximo en ese metodo porblema, asi que lo que hice fue determinar el tipo T e implementar una solucion especifica para los tipos soportados por mis formatos nativamente (8,16,24,32 bit) y conservar la interfaz generica para los clientes del metodo asi como proveer una solucion generica para los tipos no nativos que se requieran utilizar en un futuro.

Reduje el tiempo de ejecucion a menos de un segundo.  :lol:

Codigo anterior:

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
        public T[] ColorArrayDesdeBMP(Bitmap bmp)
        {
            T[] colorArray = new T[bmp.Height * bmp.Width];
            BitmapData bmpd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, bmp.PixelFormat);
            IntPtr pbmp = bmpd.Scan0;
            byte bytesPorPixel = 0;
            int j = 0;

            bytesPorPixel = (byte)((int)imagen.informacionBase.ProfundidadColor / 8);
            int anchoEnBytes = bmp.Width * bytesPorPixel;
            int paddedBytes = ((anchoEnBytes + 3) & ~3) - anchoEnBytes;
            int anchoBytesPadd = anchoEnBytes + paddedBytes;
            byte[] bmpArr = new byte[bmp.Height * anchoBytesPadd];

            System.Runtime.InteropServices.Marshal.Copy(pbmp, bmpArr, 0, bmp.Height * anchoBytesPadd);
            bmp.UnlockBits(bmpd);

            for (int i = 0; i < bmpArr.Length; i += bytesPorPixel)
            {
                colorArray[j] = new T();
                colorArray[j++].FromBMPColorArray(bmpArr, i);
                if (j % bmp.Width == 0)
                    i += paddedBytes;
            }

            return colorArray;
        }<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Codigo nuevo (cochino pero rapido)


<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->        public T[] ColorArrayDesdeBMP(Bitmap bmp)
        {
            BaseColor[] objectArray = new BaseColor[bmp.Height * bmp.Width];
            T[] colorArray= new T[1];
            Color8[] colorArray8 = new Color8[1];
            Color16[] colorArray16 = new Color16[1];
            Color24[] colorArray24 = new Color24[1];
            Color32[] colorArray32 = new Color32[1];

            BitmapData bmpd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, bmp.PixelFormat);
            IntPtr pbmp = bmpd.Scan0;
            byte bytesPorPixel = (byte)((int)imagen.informacionBase.ProfundidadColor / 8);
            int anchoEnBytes = bmp.Width * bytesPorPixel;
            int paddedBytes = ((anchoEnBytes + 3) & ~3) - anchoEnBytes;
            int anchoBytesPadd = anchoEnBytes + paddedBytes;
            byte[] bmpArr = new byte[bmp.Height * anchoBytesPadd];

            Type t = typeof(T);
            int j = 0;

            System.Runtime.InteropServices.Marshal.Copy(pbmp, bmpArr, 0, bmp.Height * anchoBytesPadd);
            bmp.UnlockBits(bmpd);

            switch (t.Name)
            {
                case "Color8":
                    colorArray8 = Array.ConvertAll<BaseColor, Color8>(objectArray, delegate(BaseColor b) { return b as Color8; });
                    for (int i = 0; i < bmpArr.Length; i += bytesPorPixel)
                    {
                        colorArray8[j] = new Color8();
                        colorArray8[j++].FromBMPColorArray(bmpArr, i);
                        if (j % bmp.Width == 0)
                            i += paddedBytes;
                    }
                    return colorArray8 as T[];
                case "Color16":
                    colorArray16 = Array.ConvertAll<BaseColor, Color16>(objectArray, delegate(BaseColor b) { return b as Color16; });
                    for (int i = 0; i < bmpArr.Length; i += bytesPorPixel)
                    {
                        colorArray16[j] = new Color16();
                        colorArray16[j++].FromBMPColorArray(bmpArr, i);
                        if (j % bmp.Width == 0)
                            i += paddedBytes;
                    }
                    return colorArray16 as T[];
                case "Color24":
                    colorArray24 = Array.ConvertAll<BaseColor, Color24>(objectArray, delegate(BaseColor b) { return b as Color24; });
                    for (int i = 0; i < bmpArr.Length; i += bytesPorPixel)
                    {
                        colorArray24[j] = new Color24();
                        colorArray24[j++].FromBMPColorArray(bmpArr, i);
                        if (j % bmp.Width == 0)
                            i += paddedBytes;
                    }
                    return colorArray24 as T[];
                case "Color32":
                    colorArray32 = Array.ConvertAll<BaseColor, Color32>(objectArray, delegate(BaseColor b) { return b as Color32; });
                    for (int i = 0; i < bmpArr.Length; i += bytesPorPixel)
                    {
                        colorArray32[j] = new Color32();
                        colorArray32[j++].FromBMPColorArray(bmpArr, i);
                        if (j % bmp.Width == 0)
                            i += paddedBytes;
                    }
                    return colorArray32 as T[];
                default:
                    colorArray = Array.ConvertAll<BaseColor, T>(objectArray, delegate(BaseColor b) { return b as T; });
                    for (int i = 0; i < bmpArr.Length; i += bytesPorPixel)
                    {
                        colorArray[j] = new T();
                        colorArray[j++].FromBMPColorArray(bmpArr, i);
                        if (j % bmp.Width == 0)
                            i += paddedBytes;
                    }

                    return colorArray;
            }
        }<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

1506
Windows / Re: De Donde Saco El Directshow (sdk)? Ayuda!
« en: Martes 17 de Octubre de 2006, 18:27 »
Exactamente, lo que se puede hacer con Direct Show hpy dia se puede hacer igual y mucho mejor desde direct 3D.

1507
C# / Re: Performance
« en: Martes 17 de Octubre de 2006, 17:44 »
:o

Haicendo averiguaciones y pruebas , resulta que hacer la misma implementacion usando tipos como clases o estucturas, la instanciacion de 2'500.000 elementos es casi inmediata, como 1/2 segundo mientras que usado generics ( el equivalente a templates en c++, el cual es mi caso) toma casi 5 segundos.  :(  tal como lo dijo eternal idol se acelera el tiempo de desarrollo pero con un costo de performance adicional.

Estas cifras las obtuve tambien en un foro de Microsoft:
Citar
new int(): 0.006 microseconds
new T() where T is int: 0.030 microseconds
new class(): 0.042 microseconds
new T() where T is class: 2.0 microseconds

Este es el link:

http://forums.microsoft.com/MSDN/ShowPost....SiteID=1&mode=1

No acepto burlas por mi ingles, pues apenas estoy aprendiendo.

Bueno por el momento no se que hacerle , si bien es un tiempo significativo lo puedo considerar como despreciable puesto que esta por demas decir que esta por fuera de mi scope ya que el formato va dirigido a animaciones para videojuego y dificilmente algun cuadro de animacion llegara a ese tamaño de imagen, de hecho ni a la mitas de ese tamaño con el cual hice las pruebas, sin embargo si se me ocurre algo como lo del pool de tipos T pues puede que llegue a implementarlo.

Hablamos.  :hola:

1508
C++ Builder / Re: Passwords En C
« en: Martes 17 de Octubre de 2006, 17:35 »
Hola, bueno ya no recuerdo mucho del desarrollo en linux / unix, pero hasta donde alca nzo ncurses tiene una funcion que eprmite capturar las cosas a manera de password, es decir ocultando o reeemplazando el mecho del teclado.

http://dickey.his.com/ncurses/ncurses-intro.html

http://www.linux.com/howtos/NCURSES-Progra...TO/attrib.shtml

1509
C# / Re: Uso de this
« en: Martes 17 de Octubre de 2006, 17:27 »
this es un puntero al objeto actual.

Es decir si estas dentro de la calse Forma1 y haces this.cosa1 te estas referiendo a la variable cosa1 definida dentro de Forma1. siemopre hace referencia al objeto actual.

Es muy util sobre todo cuando un constructor o metodo reciben como parametros variables con el mismo nombre de una variable  que ya esta definida dentro de la clase, ya que sino usas this, ni tu ni el compilador tendrian forma de diferenciarlas.

ejemplo:

Código: Text
  1.  
  2. class Punto
  3. {
  4.     int coordenadaX;
  5.     int coordenadaY;
  6.  
  7.     public Punto(int coordenadaX, int coordenadaY)
  8.    {
  9.       //Forma correcta porque this.coordenadaX hace referencia a la variable
  10.       //declarada dentro de la clase, mientras coordenadaX hace referencia a la
  11.       //variable decalrada dentro del metodo.
  12.       this.coordenadaX = coordenadaX;
  13.      
  14.       //Forma incorrecta porque ambas partes hacen referencia a la variable
  15.       //coordenadaX declarada denrto del metodo
  16.       coordenadaX = coordenadaX;
  17.  
  18.       ...
  19.       ..
  20.       this.coordenadaY = coordenadaY;    
  21.    }
  22. }
  23.  

1510
Windows / Re: Problemas Con Smtp
« en: Martes 17 de Octubre de 2006, 17:17 »
Cita de: "giomar"
Hola amigos de solocodigo.

Tengo problemas para conectar el outlook con mi servicio de correos quisiera saber como puedo comprobar todo acerca del SMTP del sistema operativo (Windows XP SP2), si el puerto esta bien configurado, si esta activado el servicios o cualquier otro que pueda ser el problema.

Agradecere mucho su cooperacion.

Saludos,

Giomar B.
Ok, creo que tu probvlema no es por el funcionamiento del SMTP de winwdows sino por otros motivos que deberas checkear

1- verificar que tangas configurado de manera correca el outlook de acuerdo a las caracteristicas del servidor de correo
2- verificar que el firewall de windows xp te este dejando pasar por los puertos requeridos por el servidor y que no tengas bloquedados los servicios de red para outlook
3- revisar los archivos host y lmhost verificando que no tengas mapeos forzados a otras ip etc
4- verificar que no nexista un firewall externo que te este denegando el acceso
5- verificar que tu usuario y contraseña sean validos.

1511
Windows / Re: De Donde Saco El Directshow (sdk)? Ayuda!
« en: Martes 17 de Octubre de 2006, 17:13 »
Existe direct show dentro de direct X???

hasta donde recuerdo esta en el Windows SDK movere este post al foro de Windows.

1512
C# / Re: Performance
« en: Martes 17 de Octubre de 2006, 00:00 »
Si eso he visto en las pruebas que he realizado hoy... ahora solo me falta averiguar como demonios hago en C# para reservar un bloque de memoria y asignarlo aun lote de 'punteros' que se encuentran un array  &lt;_&lt;

thanks

1513
C# / Re: Performance
« en: Lunes 16 de Octubre de 2006, 23:03 »
Bueno, tengo algunos ajustes en mente para hacer...
pero mientras, y antes de empezar en forma ( estaba de viaje) quisiera saber algo.

que tan importante es el consumo de memoria a la hora de medir el performance en millones de ciclos?

Si tengo una clase X con campos y metodos que tan mas eficiente seria dejar todos sus metodos esticos versus versiones diferentes de los mismos metodos pero no estaticos?

Es decir reservar 2'500.000 porciones de memoria de tamaño N/x es más rápido que reservar 2'500.000 porciones de memoria de tamaño N?  :rolleyes:

1514
Oracle / Re: Problema Con Forms
« en: Lunes 16 de Octubre de 2006, 21:59 »
tienes instalado le cliente oralce?

verificaste que el home al cual apunta forms sea el home adecuado?

1515
C# / Re: Performance
« en: Jueves 12 de Octubre de 2006, 00:42 »
Cita de: "pabloreda"
quizas tiene algun error, yo ya no programo en C ;) pero bueno...
una duda... C# todabia tiene puntero ??? espero que si

espero te ayude...
Si, C# tiene punteros..
sin embargo tu alternativa presenta un alto impacto en el codigo fuente dependiente de ese modulo...
vere si puedo hacer algo hibrido o que se yo.

Citar
Realmente hay una altisima probabilidad de que esto sea una perdida de tiempo absoluta. No tiene sentido intentar hacer esto con C# ya que no es la herramienta adecuada, si lo es para que el programa llegue a buen puerto y sea completado en el menor tiempo posible, con la mayor simplicidad y con gran posibilidad de reutilizar el codigo generado y que este sea generado en gran parte de la misma forma pero estas ventajas (entre otras mas) se vuelven desventajas a la hora de optimizar ya que se pierde el control del codigo generado.

Claro tienees mucha razon, para cosas de mision critica nda como C++/C y asm  :rolleyes:

pero en todo caso no me dare por vencido.

espero poder hacer algo.

luego les cuento.

1516
C# / Re: Performance
« en: Miércoles 11 de Octubre de 2006, 21:03 »
&lt;_&lt;  no tomare eso como una opcion  :lol:  de no poder al final hacer nada preferiria dejar lo así.  :(

Ademas en todo caso deberia extraer la informacion del bmp y copiarla en un arreglo propio de objetos tipo T  /* color*/ y ya sin padding.

1517
C# / Re: Performance
« en: Miércoles 11 de Octubre de 2006, 20:56 »
Gracias por los consejos.

Bueno he revisado el codigo paso por paso y si bien esa parte toma una parte considerable del tiempo, no es la mas representativa.

Habia pasado por alto algunos detalles y resulta que el problema principal es cuando trato de importar un archivo bmp para convertirlo en un cuadro de mi formato de archivo, puesto que el formato BMP tiene formato de color BRG y el mio tiene formato color RGB asi que lo que haga es extraer los colores del BMP y crear un array de colores en el formato correcto...hace esto:

Código: Text
  1.             for (int i = 0; i &#60; bmpArr.Length; i += bytesPorPixel)
  2.             {
  3.                 colorArray[j] = new T();
  4.                 colorArray[j++].FromBMPColorArray( bmpArr, i);
  5.                 if (j % bmp.Width == 0)
  6.                     i += paddedBytes;
  7.             }
  8.  

Para el ejemplo de las imagenes citadas anteriormente este ciclo iteraria 2'592.000 veces, y el tamaño de bmpArr seria más de 7'776.000 bytes.

donde

T es un tipo generico de Color, el constructor vacio no hace nada
colorArray es un T[]
bmpArr es un byte [] con la informacion de los bytes del bmp, incluyendo los bytes de padding
FromBMPColorArray es un metodo que extrae un color del array del bmp y lo convierte al color con formato RGB.. es decir para el caso de un color de 24 bits hace:

Código: Text
  1.         /// &#60;summary&#62;
  2.         /// Crea un Color de 24 bits a partir de un array de bytes
  3.         /// &#60;/summary&#62;
  4.         /// &#60;param name=&#34;arrByte&#34;&#62;Array de bytes que representa un color de un BMP&#60;/param&#62;
  5.         /// &#60;param name=&#34;starIndex&#34;&#62;Indice desde el cual se inicia la extraccion del color&#60;/param&#62;
  6.         public override void FromBMPColorArray(byte[] arrByte, int starIndex)
  7.         {
  8.             rojo = arrByte[starIndex + 2];
  9.             verde = arrByte[starIndex + 1];
  10.             azul = arrByte[starIndex];
  11.  
  12.             baseType = rojo &#60;&#60; 16 | verde &#60;&#60; 8 | azul;
  13.         }
  14.  

baseType es un Int32 que representa el color.

La verdad no tengo ni la mas remota idea de como optimizarlo más. Acepto cualquier sugerencia por descabellada que sea ( pero que sea posible de hacer)  :blink:  :lol:

Gracias!!!

1518
C# / Re: Performance
« en: Miércoles 11 de Octubre de 2006, 16:47 »
Bueno, nmo he encontrado diferemcias visibles con dos bmp de 1440 * 900 * 3  :blink:


asi que dejare cualquiera de los dos.


gracias.

1519
C# / Re: Performance
« en: Miércoles 11 de Octubre de 2006, 15:40 »
OK, bueno he hecho pruebas que tardan hasta 4 segundos con bitmaps uno de

955 * 581 * 3 = 1.58 mb

y otro

868 * 979 * 3 = 2.43 mb

es decir la prueba la hice con los dos al tiempo ( 4.01 mb).

pero mi objetivo es que no tarden ni un segundo, maximo uno.

bueno encontre esto que no me aclara mucho el panorama porque aun hay diferencia.

Seguire tu consejo y vere si puedo en un rato sacar algo de tiempo para un bitmap grande.

1520
C# / Re: Performance
« en: Miércoles 11 de Octubre de 2006, 15:25 »
Bueno ese es un buen dato, vere si hay documentacion para procesadores Pentium y  posteriores que son mi objetivo mas general .

SHL   :rolleyes: ? debe ser << porque no conozco nada en C/C++/C# que haga ROL alguien sabe de alguno?

1521
Programación de Videojuegos / Re: Estamos Creando Un Proyecto
« en: Miércoles 11 de Octubre de 2006, 15:03 »
:whistling:  -_-

1522
C# / Performance
« en: Miércoles 11 de Octubre de 2006, 14:51 »
Saludos,

Tengo una duda acerca de cual de estas dos instrucciones es mas rapida ya que las necesito en un proceso que se ejecuta miles de veces .

Código: Text
  1.  
  2. int variableA....
  3. ....
  4. ...
  5.  
  6. int variable= (byte)((variableA & 0x1C) &#62;&#62; 2);
  7. //---------------------------------------------
  8. int variable= (byte)((variableA &#60;&#60; 3 ) &#62;&#62; 5);
  9.  

El punto es que en variable deben quedar solo los bits  3,4,5 de la variable variableA.

Ya he probado ambos y ambos me funcionan produciendo los resultados esperados pero me interesa saber cual tiene un mejor desempeño en el procesador y desde luego cual es la razon de la respuesta.


Gracias.

1523
GNU/Linux / Re: Administrador De Ram Remota
« en: Martes 10 de Octubre de 2006, 23:11 »
En efecto, con globus puedes compartir incluso todos los recursos de cada maquina para con las otras, a discrecion de la configuracion.

Desde luego recursos se entiende todo, software , perofericos, memoria, procesador etc.

1524
GNU/Linux / Re: Administrador De Ram Remota
« en: Martes 10 de Octubre de 2006, 22:15 »
Es posible desde el punto de vista de la computacion en grilla, hay varias alternativas una mas accesible es :

http://www.globus.org/toolkit/


Otras seria buscar sistemas optrativos como amoeba o algun otr OS que funcione de manera distribuida. Existen opciones adicionales como los cluster de  memoria por software  o el uso de arreglos de memoria a nivel de harware.

1525
La taberna del BIT / Re: ¿que Otros Foros Frecuentan?
« en: Lunes 9 de Octubre de 2006, 22:20 »
yo escucho de muchos tipos de musica, principalmente:

Metal
Musica electronica
Musica Clasica
New Age
Pop

Reggueaton como musica lo odio... pero los disfruto mucho bailando :P es una delicia y una gran tentacion.

Tambien escucho

reague
hip hop

Y en menor grado
Salsa, merengue
y la musica de tradicion (vallenato, cumbia, etc.) asi como la musica 'de planchar' ( rocio duircal, roberto carlos , jose luis perales etc)

Páginas: 1 ... 59 60 [61] 62 63 ... 231