b (Benchmark) command

Measures speed of the CPU and checks RAM for errors.

Syntax

b [number_of_iterations] [-mmt{N}] [-md{N}] [-mm={Method}]

There are two tests:

  1. Compressing with LZMA method
  2. Decompressing with LZMA method

Benchmark shows rating in MIPS (million instructions per second). Rating value is calculated from measured speed and it is normalized with Intel Core 2 Duo E6600 (2.4 GHz, 4 MB L2) CPU in 64-bit Windows with multi-threading option switched off. So if you have Intel Core 2 Duo, rating values must be close to real CPU frequency.

You can change upper dictionary size to increase memory usage by -md{N} switch. Also you can change number of threads by -mmt{N} switch.

Dict column shows dictionary size. For example, 21 means 2^21 = 2 MB.

Usage column shows the percentage of time the processor is working. It's normalized for one-thread load. For example, 180% CPU Usage for 2 threads can mean that average CPU usage is about 90% for each thread.

R / U column shows rating normalized for 100% of CPU usage. That column shows performance of the one CPU thread.

Avr shows averages for different dictionary sizes.

Tot shows averages of the compressing and decompression ratings.

Compressing speed and rating strongly depend from memory (RAM) latency.

Decompressing speed and rating strongly depend from integer part of CPU. For example, Intel Pentium 4 has big branch misprediction penalty (which is effect of long pipeline) and pretty slow multiply and shift operations. So Pentium 4 has pretty low decompressing ratings.

You can call CRC calculation benchmark by specifying -mm=crc. That test shows the speed of CRC calculation in MB/s. First column shows the size of block. Next column shows the speed of CRC calculation for one thread. Other columns are results for multi-threaded CRC calculation.

Examples

7z b
calls benchmarking.
7z b -mmt1 -md26
calls benchmarking with one thread and 64 MB dictionary.
7z b 30

calls benchmarking with 30 iterations.