Performance measurements
Performance measurements#
The following table shows the latency in µs between a single publisher / subscriber connection for different payload sizes (two different processes running on the same host). You can simply measure the latency on your own machine by running the ecal_sample_latency_snd and ecal_sample_latency_rec_cb sample applications. The first two columns are showing the performance for the eCAL builtin shared memory layer and the last column for the iceoryx shared memory layer (configured by cmake option ECAL_LAYER_ICEORYX).
First start ecal_sample_latency_rec_cb. This application will receive the published payloads, send them back to the sender and print out the average receive time, the message frequency and the data throughput over all received messages. The sending application ecal_sample_latency_snd can be configured that way:
ecal_sample_latency_snd -s <payload_size [kB]> -r <send loops>
The table shows the results for a Windows and a Linux platform (200000 samples 1kB - 512kB / 10000 samples > 512 kB, zero drops).
-------------------------------
Platform
-------------------------------
System Manufacturer: HP
System Model: HP ZBook 15 G5
System Type: x64-based PC
Processor(s): 1 Prozessor(s) Installed.
[01]: Intel64 Family 6 Model 158 Stepping 10 GenuineIntel ~2592 MHz
Total Physical Memory: 32.614 MB
Payload Size (kB)
|
Win10 AMD64 (µs)
eCAL SHM
|
Ubuntu18 AMD64 (µs)
eCAL SHM
|
Ubuntu18 AMD64 (µs)
Iceoryx SHM
|
---|---|---|---|
1
|
10
|
4
|
6
|
2
|
10
|
4
|
6
|
4
|
10
|
5
|
6
|
8
|
11
|
5
|
6
|
16
|
12
|
6
|
6
|
32
|
13
|
7
|
8
|
64
|
16
|
10
|
10
|
128
|
21
|
15
|
13
|
256
|
32
|
33
|
19
|
512
|
56
|
50
|
28
|
1024
|
103
|
154
|
82
|
2048
|
363
|
392
|
177
|
4096
|
867
|
877
|
420
|
8192
|
1814
|
1119
|
534
|
16384
|
3956
|
2252
|
1060
|