Hola Marcelo : no te llegan mis mails? Si, digo que para lo que viene de la BD ya lo hago asi, y estoy muy contento :)
Saludos El día 3 de mayo de 2012 15:18, Juan <[email protected]> escribió: > Galllego > > pero se me ocurre algo re facil. quizas bobo, pero ahi va, > seguramente en algun momento instancias el float o lo hace el mapper ? > si lo hace el mapper busca donde si lo haces vos , algo asi; > > > asFloat: aBuffer > "devuelve un float del abuffer value " > "suponiendo que buffer es lo que te da la db" > ^ aBuffer value= 0.0 > ifTrue:[ self ceroFloat " devuelve una instancias de float 0.0"] > ifFalse:[ "lo que hacia antes"]. > Tambien se me ocurre el problema podria estar en el mapeador > que usan? > ReStore? > unop propio? > o el de Alan Knight no recuerdo el nombre... > saludos > jmdc > > > > 2012/5/3 GallegO <[email protected]> >> >> Hola Marcelo, >> >> si es lo que veniamos planteando, no se si no se entendio pero >> basicamente para cuando viene de las BD la cosa anda barbara, el tema >> es que cuando haces cuentas, intervienen primitivas y la VM se encarga >> de instanciar el resultado y no tenes control desde el lado de >> Smalltalk de que numero se instancia (por lo menos en Dolphin no >> conozco forma de controlarlo). >> >> Y no obvio en Dolphin no son float flyweight ni mucho menos jaja pesan >> como 80 megas los float esos jaja increible para tener todos 0 un >> cagadon. >> >> Saludos >> GallegO >> >> El día 3 de mayo de 2012 14:56, Juan <[email protected]> >> escribió: >> > Hola Gallego ,gente >> > >> > Che una idea no se si aplica, >> > No podrias usar un proxy cuando traes la data, y alli manejar el caso >> > del >> > 0.0 yo usaria un singleton, pero aqui >> > viene mi duda , no son los floats flyweight en Dolphin? sino es asi, >> > podrias >> > usar un factory o sea un metodo de creacion en la clase que devuelva una >> > instancia siempre la misma, o que administre proxy's donde tambien >> > podrias >> > volver a administrar la creacion, o sea un mix entre flyweight y proxy. >> > que te/les parece? >> > salud2 >> > jmdc >> > >> > >> > 2012/5/3 [email protected] <[email protected]> >> > >> >> Si el tema es "emprolijar" lo feo podrías subclasificar Float y hacer >> >> algo similar a lo que Symbol hace con String. Podrías mantener un >> >> pool, incluso con algún criterio estadístico, en donde no guardes todo >> >> sino lo que mas te aparezca (como el 0.0). También podrías redondear >> >> lo que se pueda, no nos olvidemos que Float ya trunca las cosas y se >> >> manda sus mocos sin ayuda de nadie. >> >> >> >> On 3 mayo, 14:39, GallegO <[email protected]> wrote: >> >> > Hola: >> >> > >> >> > Les respondo aclarando la situación. >> >> > >> >> > Ya implemente un flyweight para cuando traigo floats de la base de >> >> > datos. Luego de observar los resultados llegue a la conclusión que >> >> > por >> >> > perfomance, en mi caso particular, no valía la pena el flyweight (que >> >> > lo habia implementado con un WeakSet). La mayoría de mis valores eran >> >> > 0.0, entonces simplemente evito el 0.0, cuando viene un 0.0 >> >> > instanciado por el driver, en el lugar donde se mapea eso a los >> >> > objetos directamente si viene 0.0 lo descarto y al objeto le pongo el >> >> > SmallInteger 0, simple y rápido. Si se pone peludo algun día tenes la >> >> > posibilidad de hacer eso e incluso hacerlo para Date, Time, TimeStamp >> >> > e incluso String. >> >> > >> >> > Pero el problema que tengo es en unos objetos que calculamos en >> >> > memoria para un periodo x de tiempo. Por ejemplo calcular la >> >> > producción de 30 dias de 5000 pozos, suponiendo que cada producción >> >> > tiene 20 valores numericos que mantiene en variables de instancia, >> >> > eso >> >> > te da unos 3 millones de instancias de Float. >> >> > >> >> > Ahora, entiendo perfectamente que podemos trabajar ahí también para >> >> > evitar tener todo eso calculado, o evitar tener al menos tantos Float >> >> > 0.0 pero por como están programados todos los cálculos se hace muy >> >> > complicado (y feo) manejar esto en todos lados. De ultima que cada >> >> > seter de las variables de instancias pongo codigo que maneje un >> >> > flyweight o el Float zero al menos, pero es algo feo feo. >> >> > >> >> > Por eso pregunto por algo "transparente" como seria poder modificar >> >> > la >> >> > VM o las primitivas al menos, que en mi caso por ser Dolphin no >> >> > puedo. >> >> > >> >> > Recién veo el mail de Juan Vuletich, en Dolphin tengo FloatArray >> >> > tambien. Calculo que en vez de variables de instancia podría tener un >> >> > array de estos en mis objetos y los accessors que apunten a cada una >> >> > de las posiciones del array. No se si te referis a que es posible ese >> >> > uso. Ja! no me imagino lo que tendría que testear... >> >> > >> >> > De todas maneras tener en Smalltalk reflexividad sobre la >> >> > instanciacion como los Symbol estaría buenísimo. >> >> > >> >> > Bueno, viendo esta perspectiva ¿que me sugieren? :D >> >> > >> >> > Saludos >> >> > GallegO >> >> > >> >> > El día 3 de mayo de 2012 14:16, Angel Java Lopez >> >> > <[email protected]> escribió: >> >> > >> >> > >> >> > >> >> > > Interesante tema/problema.. >> >> > >> >> > > Por que hay millones de float? Yo me imagino algun calculo, pero >> >> > > igual >> >> > > luego >> >> > > el garbage collector deberia liberarlos. El problema es la memoria? >> >> > > se >> >> > > acaba? Se necesitan los millones de floats, digo, que esten >> >> > > referenciados y >> >> > > no sean liberados por el GC? no habra forma de cambiar el >> >> > > algoritmo? O >> >> > > el >> >> > > problema es el tiempo (mucho tiempo creando) y no la memoria? >> >> > >> >> > > 2012/5/3 [email protected] <[email protected]> >> >> > >> >> > >> Hola GallegO, >> >> > >> Supongo que habrás hecho un flyweight y es lo que generalmente me >> >> > >> sirvió. Tal vez si contarás un poco mas surjan mas ideas, en las >> >> > >> cosas >> >> > >> que me topé terminé por darme cuenta que los números son >> >> > >> muchísimos >> >> > >> menos que los que parecen, en matemática son infinitos pero en la >> >> > >> compu no, y en la realidad mucho menos. >> >> > >> >> > >> Abrazo >> >> > >> >> > >> Diego >> >> > >> >> > >> On 3 mayo, 13:04, GallegO <[email protected]> wrote: >> >> > >> > Gente: >> >> > >> >> > >> > Quería saber si alguien se le ocurre de que forma uno puede >> >> > >> > evitar >> >> > >> > la >> >> > >> > instanciación de Float en Dolphin, o si se les ocurren en >> >> > >> > cualquier >> >> > >> > Smalltalk en forma transparente. Tengo un problemita con algunos >> >> > >> > millones de floats. En algunos lados lo puedo solucionar con un >> >> > >> > lightweight pero cuando se usan primitivas en un calculo estoy >> >> > >> > al >> >> > >> > horno. >> >> > >> >> > >> > Gracias por su ayuda :) >> >> > >> >> > >> > Saludos >> >> > >> > GallegO >> >> > >> >> > >> -- >> >> > >> To post to this group, send email to >> >> > >> [email protected] >> >> > >> To unsubscribe from this group, send email to >> >> > >> [email protected] >> >> > >> >> > >>http://www.clubSmalltalk.org >> >> > >> >> > > -- >> >> > > To post to this group, send email to [email protected] >> >> > > To unsubscribe from this group, send email to >> >> > > [email protected] >> >> > >> >> > >http://www.clubSmalltalk.org >> >> >> >> -- >> >> To post to this group, send email to [email protected] >> >> To unsubscribe from this group, send email to >> >> [email protected] >> >> >> >> http://www.clubSmalltalk.org >> > >> > >> > -- >> > To post to this group, send email to [email protected] >> > To unsubscribe from this group, send email to >> > [email protected] >> > >> > http://www.clubSmalltalk.org >> >> -- >> To post to this group, send email to [email protected] >> To unsubscribe from this group, send email to >> [email protected] >> >> http://www.clubSmalltalk.org > > > -- > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > > http://www.clubSmalltalk.org -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org
