The following table details performance numbers for a number of specific RS (n, k) implementations for two general purpose processing architectures and one digital signal processor. Numbers are provided for both decode in the presence of no error, as well as decode in the presence of maximum channel error. Note that correcting errors requires more processing power than simply validating blocks, and that the required processing power increases linearly with the error rate. Typical applications tend to keep the error rate low such that active correction is not required.

The two digit hexadecimal number in each column specifies the GF(255) primitive polynomial used to generate the underlying Galois field.

The listed performance numbers are:

  • CPB – Cycles Per Block, how many cpu cycles are required to perform this step of the algorithm for each block of data, and
  • MBPS @ 1GHz – maximum throughput in MBits/sec for each 1.0 GHz of processing power (bit rate measured on the data side, not the channel side.)

All measurements are for optimized C code for the particular architecture, compiled with GCC and -O4 optimizations. No hardware acceleration or SIMD instruction optimizations were used.

Table 1 - x86

RS (255,191) 0x1D RS (255,223) CCSDS 0x87 RS (255,239) 0xCF RS (255,247) 0x2D RS (255,251) 0x63

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

Encode
10854
164.4
10552.5
181.2
6406.88
308.4
5075.25
395.6
Decode (no errors)
38994
45.8
19597.5
97.6
9045
218.5
4422
454.1
Decode (max errors)
120667
14.8
52511.25
36.4
20602.5
95.9
10251
195.9
Decode (max erasures)

Table 2 - ARM 920T

RS (255,191) 0x1D RS (255,223) CCSDS 0x87 RS (255,239) 0xCF RS (255,247) 0x2D RS (255,251) 0x63

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

Encode
100000
15.28
51250
34.81
41000
46.63
29667
66.61
23000
87.3
Decode (no errors)
124000
12.32
70500
25.3
35000
54.63
18667
105.86
8750
229.49
Decode (max errors)
462000
3.31
218500
8.16
96500
19.81
46167
42.8
21667
92.68
Decode (max erasures)
648000
2.36
302500
5.9
142250
13.44
69334
28.5
33167
60.54

Table 3 - TI C5502

RS (255,191) 0x1D RS (255,223) CCSDS 0x87 RS (255,239) 0xCF RS (255,247) 0x2D RS (255,251) 0x63

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

CPB

MBPS @ 1GHz

Encode
190000
8.04
110000
16.22
65000
29.42
35000
56.46
20000
100.4
Decode (no errors)
195000
7.84
100000
17.84
45000
42.49
25000
79.04
133334
150.6
Decode (max errors)
525000
2.91
240000
7.43
110000
17.38
55000
35.93
30000
66.93
Decode (max erasures)
680000
2.25
325000
5.49
155000
12.34
80000
24.7
40000
50.2