Dieser Code dauert ca. 8 Sekunden mit einem Strom 65K, die etwa von einem Blob in einer DatenbankWarum ist das Kopieren eines Stroms und dann schneller eine BinaryFormatter Deserialisieren mit als nur Deserialisieren
private string[] GetArray(Stream stream)
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
object result = binaryFormatter.Deserialize(stream);
return (string[])result;
}
Dieser Code dauert ein paar Millisekunden kommen :
private string[] GetArray(Stream stream)
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
MemoryStream memoryStream = new MemoryStream();
Copy(stream, memoryStream);
memoryStream.Position = 0;
object result = binaryFormatter.Deserialize(memoryStream);
return (string[])result;
}
Warum?
In welche Art von Stream gehen Sie hinein? –
Es ist der Strom, den ich von oracleReader.GetOracleBlob (col) oder sqlDataReader.GetSqlBytes (col) .Stream bekomme. Es verhält sich genauso. Die Oracle-Implementierung ist etwas schneller als für SQL Server. –
Verwenden Sie einen Profiler. Ich vermute schlechte Messung. Vielleicht macht der erste den Cache so stark, dass der zweite schnell ist. Wechseln Sie die Bestellung. Nimm auch die Datenbank aus der Gleichung. – usr