目前我正在運行一些簡單的序列化測試。幾千個對象在一個循環內被串行化和反序列化。我注意到這個測試沒有使用100%cpu。誰能解釋爲什麼?串行器沒有使用100%的CPU
UPDATE
我序列化到內存中,並序列化是單線程。我使用標準的.NET二進制序列化和protobuf-net進行比較。
目前我正在運行一些簡單的序列化測試。幾千個對象在一個循環內被串行化和反序列化。我注意到這個測試沒有使用100%cpu。誰能解釋爲什麼?串行器沒有使用100%的CPU
UPDATE
我序列化到內存中,並序列化是單線程。我使用標準的.NET二進制序列化和protobuf-net進行比較。
IO操作使得運行序列化的線程阻塞。
雖然被阻塞,但其他進程可能會佔用CPU時間。
你是指IO訪問RAM嗎? – Kimi 2010-11-09 14:51:22
@Al Bundy:實際上我正在考慮磁盤,但即使在訪問RAM時也有可能會阻塞你的線程的事情。 (如頁面錯誤)。 – 2010-11-09 14:56:10
也許你有一個多核CPU和序列化代碼是單線程?
CPU的都更快:
如果您分配了成千上萬個對象,你可能會等待一些頁面故障。
如果你正在做一個反序列化多線程,可能會有一些鎖定問題。
代碼?另外,你確定它沒有在任何一個核心上運行100%嗎?如果你的應用程序是單線程的,你將有一個最大的整體CPU使用率爲1 /( * ) –
2010-11-09 14:34:08
你是否序列化到FileStream或MemoryStream? – 2010-11-09 14:34:50
有多少頁面錯誤? :) – 2010-11-09 14:46:33