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

Responder a