3
我忘記了我的.pfx x509證書的密碼,所以我決定嘗試強制它。所以我就去考寫下了下面的代碼:爲什麼使用rawData比直接文件訪問慢
for (var i = 0; i < 1000; i++)
{
try
{
var cert = new X509Certificate2("D:/file.pfx", i.ToString(), X509KeyStorageFlags.MachineKeySet);
Console.WriteLine("Found it: " + i);
}catch
{
}
}
我知道這是遠不夠理想,但是這不是我的問題是關於什麼的。這有點慢,所以我想,我可以使用rawData重載而不是給它路徑名。所以我做了下面的代碼:
for (var i = 0; i < 1000; i++)
{
try
{
cert = new X509Certificate2(buffer, i.ToString(), X509KeyStorageFlags.MachineKeySet);
Console.WriteLine("Found it: " + i);
}catch
{}
}
凡buffer
是byte[]
;在循環之外,我用BinaryReader
將文件中的原始數據加載到文件中。
只有這段代碼慢了3倍。這是爲什麼?
編輯:我已經跑了這個代碼,現在已經有100次了,所以它不僅僅是一個隨機的巧合。
看來你的標題和文字是矛盾的,哪一個更快?原始數據變體還是您傳遞路徑的變體? – RedX
我很抱歉,他們的確是。使用直接文件訪問實際上更快;) –
我會想象這是因爲磁盤緩存/窗口管理器正在更有效地處理事情,然後你簡單的字節緩存。雖然有趣。 – asawyer