目前我正在运行一些简单的序列化测试。几千个对象在一个循环内被串行化和反序列化。我注意到这个测试没有使用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