Сериализатор не использует 100% CPU - PullRequest
4 голосов
/ 09 ноября 2010

В настоящее время я провожу несколько простых тестов сериализации. Несколько тысяч объектов серилизуются и десериализуются в цикле. Я заметил, что этот тест не использует 100% процессора. Кто-нибудь может объяснить, почему?

UPDATE

Я сериализую в память, а сериализация однопоточная. Я использую стандартную двоичную сериализацию .NET и protobuf-net для сравнения.

Ответы [ 5 ]

3 голосов
/ 09 ноября 2010

Операции ввода-вывода заставляют поток, выполняющий сериализацию, блокироваться.
Пока он заблокирован, другие процессы могут получить время ЦП.

2 голосов
/ 09 ноября 2010

У вас есть многоядерный процессор?Потому что, если это так, для сериализации будет использоваться только одно из ядер, потому что это однопоточный процесс.

1 голос
/ 09 ноября 2010

Возможно, у вас многоядерный процессор, а код сериализации однопоточный?

0 голосов
/ 09 ноября 2010

ЦП работают быстрее:

  • Диск (даже SSD)
  • Сеть
  • ОЗУ / Память

Если вывыделяя тысячи объектов, возможно, вас ждут некоторые сбои страниц.

Если вы выполняете многопоточную десериализацию, могут возникнуть некоторые проблемы с блокировкой.

0 голосов
/ 09 ноября 2010
  • Многоядерный / потоковый ЦП?
  • Издержки скорости памяти?
  • Издержки скорости диска?
...