Acerca del objeto DateTime

17/04/2007 - 21:33 por Harvey Triana | Informe spam
Si yo escribo algo como:

public struct WITSTable
{
public DateTime t;
public float v;
}
const int COUNT = 100000;
WITSTable[] a = new WITSTable[COUNT];

El peso del array es considerable. ¿Existe una manera más eficiente de
escribir esto?
Si yo escribo en Visual Basic clásico:

Public Type WITSTable
DateTime As Date
Value As Single
End Type
Private Const COUNT As Long = 100000
Private a(1 To COUNT) As WITSTable

El peso del array es ligero.

Corolario

Quisiera que existiera un tipo en .NET que almacenara tiempo en solo 8 bytes
por variable.

Su servidor,
<Harvey Triana />

Preguntas similare

Leer las respuestas

#1 RFOG
18/04/2007 - 10:06 | Informe spam
En Tue, 17 Apr 2007 21:33:08 +0200, Harvey Triana
escribió:

Si yo escribo algo como:

public struct WITSTable
{
public DateTime t;
public float v;
}
const int COUNT = 100000;
WITSTable[] a = new WITSTable[COUNT];

El peso del array es considerable. ¿Existe una manera más eficiente de
escribir esto?
Si yo escribo en Visual Basic clásico:

Public Type WITSTable
DateTime As Date
Value As Single
End Type
Private Const COUNT As Long = 100000
Private a(1 To COUNT) As WITSTable

El peso del array es ligero.

Corolario

Quisiera que existiera un tipo en .NET que almacenara tiempo en solo 8
bytes
por variable.

Su servidor,
<Harvey Triana />






No solo el peso es considerable, sino que cada vez que trates eso como
objeto en lugar de como tipo básico vas a generar unos boxing/unboxing de
órdago y el rendimiento va a ser peor que pésimo...

Para eso lo mejor es que uses genéricos, si quieres acceder como un array
usa una lista:

List<WITSTable> miLista=new List<WITSTable>();

Ahora, que el box/unbox no te lo quita nadie. Casi sería preferible que
cambiaras esa estructura por una clase... Aunque la estructura DateTime
sigue siendo eso, una estructura.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Si hubiera un solo hombre inmortal sería asesinado por los envidiosos.
Respuesta Responder a este mensaje
#2 Harvey Triana
18/04/2007 - 17:26 | Informe spam
Hola

No solo el peso es considerable, sino que cada vez que trates eso como
objeto en lugar de como tipo básico vas a generar unos boxing/unboxing de
órdago y el rendimiento va a ser peor que pésimo...



¿En donde lo trato como un objeto?

<Harvey Triana />




"RFOG" escribió en el mensaje
news:
En Tue, 17 Apr 2007 21:33:08 +0200, Harvey Triana
escribió:

Si yo escribo algo como:

public struct WITSTable
{
public DateTime t;
public float v;
}
const int COUNT = 100000;
WITSTable[] a = new WITSTable[COUNT];

El peso del array es considerable. ¿Existe una manera más eficiente de
escribir esto?
Si yo escribo en Visual Basic clásico:

Public Type WITSTable
DateTime As Date
Value As Single
End Type
Private Const COUNT As Long = 100000
Private a(1 To COUNT) As WITSTable

El peso del array es ligero.

Corolario

Quisiera que existiera un tipo en .NET que almacenara tiempo en solo 8
bytes
por variable.

Su servidor,
<Harvey Triana />






No solo el peso es considerable, sino que cada vez que trates eso como
objeto en lugar de como tipo básico vas a generar unos boxing/unboxing de
órdago y el rendimiento va a ser peor que pésimo...

Para eso lo mejor es que uses genéricos, si quieres acceder como un array
usa una lista:

List<WITSTable> miLista=new List<WITSTable>();

Ahora, que el box/unbox no te lo quita nadie. Casi sería preferible que
cambiaras esa estructura por una clase... Aunque la estructura DateTime
sigue siendo eso, una estructura.

Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
> Si hubiera un solo hombre inmortal sería asesinado por los envidiosos.
Respuesta Responder a este mensaje
#3 Alfredo Novoa
18/04/2007 - 17:52 | Informe spam
On Tue, 17 Apr 2007 14:33:08 -0500, "Harvey Triana"
wrote:

public struct WITSTable
{
public DateTime t;
public float v;
}
const int COUNT = 100000;
WITSTable[] a = new WITSTable[COUNT];

El peso del array es considerable.



1.200.000 bytes

A mi me parece que está bastante bien.

¿Existe una manera más eficiente de
escribir esto?



Si, puedes almacenar la fecha en un entero de 32 bits.

Otra solución es usar enteros de 16 bits donde caben cerca de 45 años.

Otra es usar algún algoritmo de compresión, pero ya se complica
bastante la cosa.


Saludos
Respuesta Responder a este mensaje
#4 Alfredo Novoa
18/04/2007 - 17:55 | Informe spam
On Tue, 17 Apr 2007 14:33:08 -0500, "Harvey Triana"
wrote:

Corolario

Quisiera que existiera un tipo en .NET que almacenara tiempo en solo 8 bytes
por variable.



Eso es justo lo que hace DateTime.


Saludos
Respuesta Responder a este mensaje
#5 Alfredo Novoa
18/04/2007 - 17:57 | Informe spam
On Wed, 18 Apr 2007 17:52:33 +0200, Alfredo Novoa
wrote:

Otra solución es usar enteros de 16 bits donde caben cerca de 45 años.



Perdón, cerca de 180 años.


Saludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida