串行器未使用 100% CPU
目前我正在运行一些简单的序列化测试。几千个对象在一个循环内被序列化和反序列化。我注意到这个测试并没有使用 100% 的 cpu。有人能解释一下为什么吗?
更新
我正在序列化到内存中,并且序列化是单线程的。我使用标准 .NET 二进制序列化和 protobuf-net 进行比较。
Currently I'm running a few simple serialization tests. A few thousand objects are serilaized and deserialized within a loop. I noticed that this test is not using 100% cpu. Could anyone explain why?
UPDATE
I'm serializing into memory, and serialization is singlethreaded. I'm using standard .NET binary serialization and protobuf-net to compare.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
IO 操作使运行序列化的线程阻塞。
当它被阻塞时,其他进程可能会获得 CPU 时间。
IO Operations make the thread running the serialization to block.
While it is blocked, other processes might get CPU time.
你有多核处理器吗?因为,如果是这样,序列化将仅使用其中一个核心,因为它是单线程进程。
Have you got a multi-core processor? Because, if so, serialization will only use one of the cores because it's a single threaded process.
也许您有一个多核 CPU 并且序列化代码是单线程的?
Perhaps you have a multicore CPU and the serialization code is single-threaded?
CPU 的速度更快,如下所示:
如果您要分配数千个对象,则可能会等待一些页面错误。
如果您正在进行多线程反序列化,可能会出现一些锁定问题。
CPU's are faster as:
If you are allocating thousands of objects, you might be waiting for some page-faults.
If you are doing a de-serialization multithreaded, there might be some locking issues.