Muchos aFloat

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
28 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Muchos aFloat

Angel Java Lopez
Hola gente!

Bien, fui entendiendo... Pero lo que no me quedo claro es:

- Cual es el problema de tener 3 millones de instancias de float?

Digo, en que se nota? 

1 - En performance? 
2 - O da en algun momento: falta memoria?

Si es el primer caso, es por el tiempo de creacion de los objetos? Como se midio que era por eso?

2012/5/3 GallegO <[hidden email]>
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
<[hidden email]> 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 [hidden email] <[hidden email]>
>
>> 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 <[hidden email]> 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 [hidden email]
>> To unsubscribe from this group, send email to
>> [hidden email]
>>
>> http://www.clubSmalltalk.org
>
>
> --
> To post to this group, send email to [hidden email]
> To unsubscribe from this group, send email to
> [hidden email]
>
> http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]

http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
Reply | Threaded
Open this post in threaded view
|

Re: Muchos aFloat

Sebastian Calvo
Angel:

No es un tema de tiempo, mas que nada de memoria y limites en el
tamaños de la tabla de objetos en el ObjectMemory.

En Dolphin por defecto el limite es bastante bajo, 8 millones y pico
de objetos. Se puede agrandar patcheando el image pero a veces genera
cierta inestabilidad (Me a pasado en win7 64 mas que nada no se que
tendra que ver).

Digamos que hago el calculo un par de veces y como todo es un objeto,
suma todo el ambiente, metodos, strings, etc y llegas muy rápido al
limite si es que te zarpas.

En Squeak con Cog inclusive la vm viene limitada a 512 mb así que si
te pasas de eso te sale un lindo cartelito. Se llega bastante fácil a
eso.

Creo que VW debe ser el mas preparadito, hasta donde recuerdo la
configuración de memoria era una Strategy o algo asi. No se cuales son
los limites reales, quizás Andres nos pueda contar.

Bueno, por ultimo decir que es obvio como decía Diego que no nos hace
falta tener todos estos objetos pero que a veces surgen estos
problemas y en algunos casos no se pueden atacar en forma tan
transparente, y eso jode.

Saludos
  Gallego

El día 3 de mayo de 2012 17:04, Angel Java Lopez
<[hidden email]> escribió:

> Hola gente!
>
> Bien, fui entendiendo... Pero lo que no me quedo claro es:
>
> - Cual es el problema de tener 3 millones de instancias de float?
>
> Digo, en que se nota?
>
> 1 - En performance?
> 2 - O da en algun momento: falta memoria?
>
> Si es el primer caso, es por el tiempo de creacion de los objetos? Como se
> midio que era por eso?
>
> 2012/5/3 GallegO <[hidden email]>
>>
>> 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
>> <[hidden email]> 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 [hidden email] <[hidden email]>
>> >
>> >> 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 <[hidden email]> 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 [hidden email]
>> >> To unsubscribe from this group, send email to
>> >> [hidden email]
>> >>
>> >> http://www.clubSmalltalk.org
>> >
>> >
>> > --
>> > To post to this group, send email to [hidden email]
>> > To unsubscribe from this group, send email to
>> > [hidden email]
>> >
>> > http://www.clubSmalltalk.org
>>
>> --
>> To post to this group, send email to [hidden email]
>> To unsubscribe from this group, send email to
>> [hidden email]
>>
>> http://www.clubSmalltalk.org
>
>
> --
> To post to this group, send email to [hidden email]
> To unsubscribe from this group, send email to
> [hidden email]
>
> http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]

http://www.clubSmalltalk.org
Reply | Threaded
Open this post in threaded view
|

Re: Muchos aFloat

Sebastian Calvo
In reply to this post by J. Vuletich (mail lists)
> Yo no llamaría a Cuis "producto", ya que no se vende! Prefiero llamarlo
> "proyecto".

Ok :)

> Una estrategia para hacer algo como lo que vos imaginás podría llegar a
> entrar a mi "radar" si tuviera un problema y esa fuera la mejor solución. En
> este caso, la solución que yo usaría es la que ya te sugerí; así que si
> estuviera en tu lugar (pero usando Cuis), igual tampoco intentaría meter en
> la VM lo que vos decís...

> Yo te diría que pienses un ratito en lo que sugiero. La mejora en
> performance sería muy grande (hablo por experiencia).

Ok. Conoces alguna implementacion de la aritmética en estos External Float?

Saludos
  GallegO

>
>
>> El día 3 de mayo de 2012 16:37, Juan Vuletich (mail lists)
>> <[hidden email]> escribió:
>>>
>>> Quoting GallegO <[hidden email]>:
>>>
>>>> Hola:
>>>>
>>>> ...
>>>>
>>>>
>>>> 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...
>>>> Saludos
>>>>  GallegO
>>>
>>>
>>>
>>> Si, a eso me refiero. Incluso, si tenes las operaciones de FloatArray
>>> necesarias, durante los calculos no necesitas alocar Floats. Hacés
>>> directamente las cuentas con los FloatArray, y usando operaciones que
>>> sobreescriben los valores (en vez de crear instancias nuevas).
>>>
>>> Cheers,
>>> Juan Vuletich
>>>
>>>
>
> Cheers,
> Juan Vuletich
>
> --
> To post to this group, send email to [hidden email]
> To unsubscribe from this group, send email to
> [hidden email]
>
> http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]

http://www.clubSmalltalk.org
Reply | Threaded
Open this post in threaded view
|

Re: Muchos aFloat

Juan-2
Hola Gallego , gente

Gallego y que tal usar omnibase? tal vez no lo resuelva no se,  pero no allocarias memoria
ademas el omnibase te haria los proxy's y es muy performante, con limitaciones claro , péro
es una idea. ademas si tenes problemas con el table object podria ser una solucion,
no se Bruno tambien tiene experiencia con Omnibase, que pensas Bruno?.
salu2
jmdc

2012/5/3 GallegO <[hidden email]>
> Yo no llamaría a Cuis "producto", ya que no se vende! Prefiero llamarlo
> "proyecto".

Ok :)

> Una estrategia para hacer algo como lo que vos imaginás podría llegar a
> entrar a mi "radar" si tuviera un problema y esa fuera la mejor solución. En
> este caso, la solución que yo usaría es la que ya te sugerí; así que si
> estuviera en tu lugar (pero usando Cuis), igual tampoco intentaría meter en
> la VM lo que vos decís...

> Yo te diría que pienses un ratito en lo que sugiero. La mejora en
> performance sería muy grande (hablo por experiencia).

Ok. Conoces alguna implementacion de la aritmética en estos External Float?

Saludos
 GallegO

>
>
>> El día 3 de mayo de 2012 16:37, Juan Vuletich (mail lists)
>> <[hidden email]> escribió:
>>>
>>> Quoting GallegO <[hidden email]>:
>>>
>>>> Hola:
>>>>
>>>> ...
>>>>
>>>>
>>>> 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...
>>>> Saludos
>>>>  GallegO
>>>
>>>
>>>
>>> Si, a eso me refiero. Incluso, si tenes las operaciones de FloatArray
>>> necesarias, durante los calculos no necesitas alocar Floats. Hacés
>>> directamente las cuentas con los FloatArray, y usando operaciones que
>>> sobreescriben los valores (en vez de crear instancias nuevas).
>>>
>>> Cheers,
>>> Juan Vuletich
>>>
>>>
>
> Cheers,
> Juan Vuletich
>
> --
> To post to this group, send email to [hidden email]
> To unsubscribe from this group, send email to
> [hidden email]
>
> http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]

http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
Reply | Threaded
Open this post in threaded view
|

Re: Muchos aFloat

Esteban A. Maringolo
El 3 de mayo de 2012 18:19, Juan <[hidden email]> escribió:
Hola Gallego , gente

Gallego y que tal usar omnibase? tal vez no lo resuelva no se,  pero no allocarias memoria
ademas el omnibase te haria los proxy's y es muy performante, con limitaciones claro , péro
es una idea. ademas si tenes problemas con el table object podria ser una solucion,
no se Bruno tambien tiene experiencia con Omnibase, que pensas Bruno?.


¿Para qué usaríamos Omnibase?

Algo de experiencia con Omnibase tenemos, sobre todo con un repositorio de STS de unos 800MB y creciendo... 




Esteban A. Maringolo
 

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
Reply | Threaded
Open this post in threaded view
|

Re: Muchos aFloat

J. Vuletich (mail lists)
In reply to this post by Sebastian Calvo
Quoting GallegO <[hidden email]>:

>> Yo no llamaría a Cuis "producto", ya que no se vende! Prefiero llamarlo
>> "proyecto".
>
> Ok :)
>
>> Una estrategia para hacer algo como lo que vos imaginás podría llegar a
>> entrar a mi "radar" si tuviera un problema y esa fuera la mejor solución. En
>> este caso, la solución que yo usaría es la que ya te sugerí; así que si
>> estuviera en tu lugar (pero usando Cuis), igual tampoco intentaría meter en
>> la VM lo que vos decís...

Algo que me olvide de aclarar... Yo para Cuis implemento lo que me  
parece que es bueno que este en el sistema base. Si alguien mas quiere  
implementar lo que vos proponias es muy bienvenido!

>> Yo te diría que pienses un ratito en lo que sugiero. La mejora en
>> performance sería muy grande (hablo por experiencia).
>
> Ok. Conoces alguna implementacion de la aritmética en estos External Float?

No para Dolphin... Cuis (y Squeak, y supongo que Pharo tambien) tienen  
la clase FloatArray con metodos como #*=, etc.

>
> Saludos
>   GallegO
>
>>
>>
>>> El día 3 de mayo de 2012 16:37, Juan Vuletich (mail lists)
>>> <[hidden email]> escribió:
>>>>
>>>> Quoting GallegO <[hidden email]>:
>>>>
>>>>> Hola:
>>>>>
>>>>> ...
>>>>>
>>>>>
>>>>> 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...
>>>>> Saludos
>>>>>  GallegO
>>>>
>>>>
>>>>
>>>> Si, a eso me refiero. Incluso, si tenes las operaciones de FloatArray
>>>> necesarias, durante los calculos no necesitas alocar Floats. Hacés
>>>> directamente las cuentas con los FloatArray, y usando operaciones que
>>>> sobreescriben los valores (en vez de crear instancias nuevas).
>>>>
>>>> Cheers,
>>>> Juan Vuletich
>>>>
>>>>
>>
>> Cheers,
>> Juan Vuletich
>>
>> --
>> To post to this group, send email to [hidden email]
>> To unsubscribe from this group, send email to
>> [hidden email]
>>
>> http://www.clubSmalltalk.org
>
> --
> To post to this group, send email to [hidden email]
> To unsubscribe from this group, send email to  
> [hidden email]
>
> http://www.clubSmalltalk.org
>



Cheers,
Juan Vuletich

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]

http://www.clubSmalltalk.org
Reply | Threaded
Open this post in threaded view
|

Re: Muchos aFloat

Juan-2
Gallego

Omnibase para usar un ODBTreeDictionary (no recuerdo exactamente el nombre) donde poner los floats, de manera tal que no los instanciarias en tu image.
ademas es rapido el accceso y son proxy ,esa fue la idea.
salu2
jmdc



2012/5/3 Juan Vuletich (mail lists) <[hidden email]>
Quoting GallegO <[hidden email]>:

Yo no llamaría a Cuis "producto", ya que no se vende! Prefiero llamarlo
"proyecto".

Ok :)

Una estrategia para hacer algo como lo que vos imaginás podría llegar a
entrar a mi "radar" si tuviera un problema y esa fuera la mejor solución. En
este caso, la solución que yo usaría es la que ya te sugerí; así que si
estuviera en tu lugar (pero usando Cuis), igual tampoco intentaría meter en
la VM lo que vos decís...

Algo que me olvide de aclarar... Yo para Cuis implemento lo que me parece que es bueno que este en el sistema base. Si alguien mas quiere implementar lo que vos proponias es muy bienvenido!


Yo te diría que pienses un ratito en lo que sugiero. La mejora en
performance sería muy grande (hablo por experiencia).

Ok. Conoces alguna implementacion de la aritmética en estos External Float?

No para Dolphin... Cuis (y Squeak, y supongo que Pharo tambien) tienen la clase FloatArray con metodos como #*=, etc.



Saludos
 GallegO



El día 3 de mayo de 2012 16:37, Juan Vuletich (mail lists)
<[hidden email]> escribió:

Quoting GallegO <[hidden email]>:

Hola:

...


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...
Saludos
 GallegO



Si, a eso me refiero. Incluso, si tenes las operaciones de FloatArray
necesarias, durante los calculos no necesitas alocar Floats. Hacés
directamente las cuentas con los FloatArray, y usando operaciones que
sobreescriben los valores (en vez de crear instancias nuevas).

Cheers,
Juan Vuletich



Cheers,
Juan Vuletich

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to
[hidden email]

http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]

http://www.clubSmalltalk.org




Cheers,
Juan Vuletich

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]

http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
Reply | Threaded
Open this post in threaded view
|

Re: Muchos aFloat

Angel Java Lopez
In reply to this post by Sebastian Calvo
Ah! Ahora entendi, no conocia las limitaciones de memoria de esas implementacions, gracias por el detalle.

Bien, si el tema es el consumo de memoria (y las entradas de la Object Table, en las implementaciones que usan OT, creo que Squeak no la usa, no?) se podria tener operaciones tipo

x *= y
x += 1.2

estas operaciones USARIAN COMO RESULTADO el mismo lugar/espacio ya reservado para x.

Claro, no es una solucion para ahora, porque implica tocar la VM (creo). Pero permitiria:

- Mantener los operadores *, + y demas como siempre
- Usar estos operadores en los casos que se necesita

Nos leemos!

Angel "Java" Lopez

2012/5/3 GallegO <[hidden email]>
Angel:

No es un tema de tiempo, mas que nada de memoria y limites en el
tamaños de la tabla de objetos en el ObjectMemory.

En Dolphin por defecto el limite es bastante bajo, 8 millones y pico
de objetos. Se puede agrandar patcheando el image pero a veces genera
cierta inestabilidad (Me a pasado en win7 64 mas que nada no se que
tendra que ver).

Digamos que hago el calculo un par de veces y como todo es un objeto,
suma todo el ambiente, metodos, strings, etc y llegas muy rápido al
limite si es que te zarpas.

En Squeak con Cog inclusive la vm viene limitada a 512 mb así que si
te pasas de eso te sale un lindo cartelito. Se llega bastante fácil a
eso.

Creo que VW debe ser el mas preparadito, hasta donde recuerdo la
configuración de memoria era una Strategy o algo asi. No se cuales son
los limites reales, quizás Andres nos pueda contar.

Bueno, por ultimo decir que es obvio como decía Diego que no nos hace
falta tener todos estos objetos pero que a veces surgen estos
problemas y en algunos casos no se pueden atacar en forma tan
transparente, y eso jode.

Saludos
 Gallego

El día 3 de mayo de 2012 17:04, Angel Java Lopez
<[hidden email]> escribió:
> Hola gente!
>
> Bien, fui entendiendo... Pero lo que no me quedo claro es:
>
> - Cual es el problema de tener 3 millones de instancias de float?
>
> Digo, en que se nota?
>
> 1 - En performance?
> 2 - O da en algun momento: falta memoria?
>
> Si es el primer caso, es por el tiempo de creacion de los objetos? Como se
> midio que era por eso?
>
> 2012/5/3 GallegO <[hidden email]>
>>
>> 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
>> <[hidden email]> 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 [hidden email] <[hidden email]>
>> >
>> >> 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 <[hidden email]> 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 [hidden email]
>> >> To unsubscribe from this group, send email to
>> >> [hidden email]
>> >>
>> >> http://www.clubSmalltalk.org
>> >
>> >
>> > --
>> > To post to this group, send email to [hidden email]
>> > To unsubscribe from this group, send email to
>> > [hidden email]
>> >
>> > http://www.clubSmalltalk.org
>>
>> --
>> To post to this group, send email to [hidden email]
>> To unsubscribe from this group, send email to
>> [hidden email]
>>
>> http://www.clubSmalltalk.org
>
>
> --
> To post to this group, send email to [hidden email]
> To unsubscribe from this group, send email to
> [hidden email]
>
> http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]

http://www.clubSmalltalk.org

--
To post to this group, send email to [hidden email]
To unsubscribe from this group, send email to [hidden email]
 
http://www.clubSmalltalk.org
12