Tengo una gran variedad de este tipo:
type TradeData = { Timestamp: DateTime Instrument: Instrument Price: decimal Quantity: decimal Direction: Direction }
Estamos hablando de varios gigabytes cargados cada vez durante la depuración. Los datos se almacenan en el disco en formato binario usando FSPickler, que es mucho más rápido que Json, pero aun así tarda mucho en cargarse. Lo aceleré cortando el archivo en fragmentos de 1 h y cargándolos en paralelo, pero aún tardamos entre 15 y 20 segundos al comienzo de cada sesión de depuración.
Lo que me gustaría saber es si puedo poner los datos en una matriz, escribir la matriz como un blob binario. Luego cargaría el blob y haría algo como:
myData = (TradeData *) pBinaryBlob
No estoy seguro de si esto es factible en dotnet, o si cada objeto realmente necesita inicializarse de forma independiente.
Esto probablemente se pueda hacer siempre que use struct
s en lugar de objetos. Si ya ha serializado el archivo como objetos, es posible que deba volver a serializar el archivo una vez para alinear los bits con las estructuras o anotar cuidadosamente su estructura con las alineaciones de bytes necesarias.
Si lee FileStream
en búferes de bytes, entonces consideraría usar nativeptr<'T> o (ReadOnly)Span<'T>
y MemoryMarshal.Cast
para realizar una conversión unsafe
.