此代碼需要大約8秒,約含65K流從一個blob來在數據庫爲什麼複製流,然後使用BinaryFormatter的不僅僅是反序列化
private string[] GetArray(Stream stream)
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
object result = binaryFormatter.Deserialize(stream);
return (string[])result;
}
此代碼需要幾毫秒快反序列化:
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;
}
爲什麼?
你傳入什麼樣的流? –
這是我從oracleReader.GetOracleBlob(col)或sqlDataReader.GetSqlBytes(col).Stream獲得的流。它的行爲相同。 oracle實現比sql server快一些。 –
使用分析器。我懷疑測量不好。也許第一個填充緩存,所以第二個很快。切換訂單。另外,從數據庫中取出數據庫。 – usr