BList Benchmarks

Comparing Various Structures and Systems

A comparison with std::list (Times are in seconds on maya with g++ 8.3 and -O2)
Node size std::list
push_back
100,000,000
std::vector
push_back
100,000,000
BList
push_back
100,000,000
std::list
insert
100,000
std::vector
insert
100,000
BList
insert
100,000
16.20.516.625.71.625.5
2  4.9  15.7
4  3.9  7.6
8  3.4  3.7
16  3.2  1.7
32  3.1  0.84
64  3.0  0.37
128  3.0  0.15
256  3.0  0.07
512  3.0  0.05
Inserting 1,000,000 elements (keeping the container sorted) into:

Detailed computer specs.

struct BNode
{
  BNode *next;
  BNode *prev;
  int count; // number of items currently in the node
  T values[Size];
  BNode() : next(0), prev(0), count(0) {}
};

where T = int and there may be padding in the struct.

Inserting 100,000 items into a BList of various sizes: (Asize is the number of elements per node, Nsize is sizeof(BNode))

Maya (i7-3770@3.4GHz)Olga (i7-930@2.8GHz)Veronica (i7-3517UE@2.1GHz)Volper (AMD FX-8120@3.1GHz)
Asize: 1
Nsize: 24
Items: 100000
Nodes: 100000
Average items per node: 1
Node utilization: 100%

Elapsed time: 25.11 secs
==============================
Asize: 2
Nsize: 32
Items: 100000
Nodes: 61400
Average items per node: 1.629
Node utilization: 81.4%

Elapsed time: 15.36 secs
==============================
Asize: 4
Nsize: 40
Items: 100000
Nodes: 33250
Average items per node: 3.008
Node utilization: 75.2%

Elapsed time: 9.32 secs
==============================
Asize: 8
Nsize: 56
Items: 100000
Nodes: 17370
Average items per node: 5.757
Node utilization: 72%

Elapsed time: 3.57 secs
==============================
Asize: 16
Nsize: 88
Items: 100000
Nodes: 8856
Average items per node: 11.29
Node utilization: 70.6%

Elapsed time: 1.7 secs
==============================
Asize: 32
Nsize: 152
Items: 100000
Nodes: 4410
Average items per node: 22.68
Node utilization: 70.9%

Elapsed time: 0.83 secs
==============================
Asize: 64
Nsize: 280
Items: 100000
Nodes: 2220
Average items per node: 45.05
Node utilization: 70.4%

Elapsed time: 0.36 secs
==============================
Asize: 128
Nsize: 536
Items: 100000
Nodes: 1085
Average items per node: 92.17
Node utilization: 72%

Elapsed time: 0.15 secs
==============================
Asize: 256
Nsize: 1048
Items: 100000
Nodes: 523
Average items per node: 191.2
Node utilization: 74.7%

Elapsed time: 0.07 secs
==============================
Asize: 512
Nsize: 2072
Items: 100000
Nodes: 257
Average items per node: 389.1
Node utilization: 76%

Elapsed time: 0.04 secs
==============================
Asize: 1024
Nsize: 4120
Items: 100000
Nodes: 128
Average items per node: 781.2
Node utilization: 76.3%

Elapsed time: 0.04 secs
==============================
Asize: 2048
Nsize: 8216
Items: 100000
Nodes: 64
Average items per node: 1562
Node utilization: 76.3%

Elapsed time: 0.07 secs
==============================
Asize: 4096
Nsize: 16408
Items: 100000
Nodes: 32
Average items per node: 3125
Node utilization: 76.3%

Elapsed time: 0.15 secs
==============================
Asize: 1
Nsize: 24
Items: 100000
Nodes: 100000
Average items per node: 1
Node utilization: 100%

Elapsed time: 46.34 secs
==============================
Asize: 2
Nsize: 32
Items: 100000
Nodes: 61400
Average items per node: 1.629
Node utilization: 81.4%

Elapsed time: 27.56 secs
==============================
Asize: 4
Nsize: 40
Items: 100000
Nodes: 33250
Average items per node: 3.008
Node utilization: 75.2%

Elapsed time: 13.21 secs
==============================
Asize: 8
Nsize: 56
Items: 100000
Nodes: 17370
Average items per node: 5.757
Node utilization: 72%

Elapsed time: 6.42 secs
==============================
Asize: 16
Nsize: 88
Items: 100000
Nodes: 8856
Average items per node: 11.29
Node utilization: 70.6%

Elapsed time: 2.8 secs
==============================
Asize: 32
Nsize: 152
Items: 100000
Nodes: 4410
Average items per node: 22.68
Node utilization: 70.9%

Elapsed time: 1.41 secs
==============================
Asize: 64
Nsize: 280
Items: 100000
Nodes: 2220
Average items per node: 45.05
Node utilization: 70.4%

Elapsed time: 0.53 secs
==============================
Asize: 128
Nsize: 536
Items: 100000
Nodes: 1085
Average items per node: 92.17
Node utilization: 72%

Elapsed time: 0.19 secs
==============================
Asize: 256
Nsize: 1048
Items: 100000
Nodes: 523
Average items per node: 191.2
Node utilization: 74.7%

Elapsed time: 0.1 secs
==============================
Asize: 512
Nsize: 2072
Items: 100000
Nodes: 257
Average items per node: 389.1
Node utilization: 76%

Elapsed time: 0.06 secs
==============================
Asize: 1024
Nsize: 4120
Items: 100000
Nodes: 128
Average items per node: 781.2
Node utilization: 76.3%

Elapsed time: 0.08 secs
==============================
Asize: 2048
Nsize: 8216
Items: 100000
Nodes: 64
Average items per node: 1562
Node utilization: 76.3%

Elapsed time: 0.13 secs
==============================
Asize: 4096
Nsize: 16408
Items: 100000
Nodes: 32
Average items per node: 3125
Node utilization: 76.3%

Elapsed time: 0.25 secs
==============================
Asize: 1
Nsize: 24
Items: 100000
Nodes: 100000
Average items per node: 1
Node utilization: 100%

Elapsed time: 40.92 secs
==============================
Asize: 2
Nsize: 32
Items: 100000
Nodes: 61400
Average items per node: 1.629
Node utilization: 81.4%

Elapsed time: 23.78 secs
==============================
Asize: 4
Nsize: 40
Items: 100000
Nodes: 33250
Average items per node: 3.008
Node utilization: 75.2%

Elapsed time: 10.21 secs
==============================
Asize: 8
Nsize: 56
Items: 100000
Nodes: 17370
Average items per node: 5.757
Node utilization: 72%

Elapsed time: 5.27 secs
==============================
Asize: 16
Nsize: 88
Items: 100000
Nodes: 8856
Average items per node: 11.29
Node utilization: 70.6%

Elapsed time: 2.39 secs
==============================
Asize: 32
Nsize: 152
Items: 100000
Nodes: 4410
Average items per node: 22.68
Node utilization: 70.9%

Elapsed time: 1.17 secs
==============================
Asize: 64
Nsize: 280
Items: 100000
Nodes: 2220
Average items per node: 45.05
Node utilization: 70.4%

Elapsed time: 0.5 secs
==============================
Asize: 128
Nsize: 536
Items: 100000
Nodes: 1085
Average items per node: 92.17
Node utilization: 72%

Elapsed time: 0.21 secs
==============================
Asize: 256
Nsize: 1048
Items: 100000
Nodes: 523
Average items per node: 191.2
Node utilization: 74.7%

Elapsed time: 0.09 secs
==============================
Asize: 512
Nsize: 2072
Items: 100000
Nodes: 257
Average items per node: 389.1
Node utilization: 76%

Elapsed time: 0.07 secs
==============================
Asize: 1024
Nsize: 4120
Items: 100000
Nodes: 128
Average items per node: 781.2
Node utilization: 76.3%

Elapsed time: 0.06 secs
==============================
Asize: 2048
Nsize: 8216
Items: 100000
Nodes: 64
Average items per node: 1562
Node utilization: 76.3%

Elapsed time: 0.12 secs
==============================
Asize: 4096
Nsize: 16408
Items: 100000
Nodes: 32
Average items per node: 3125
Node utilization: 76.3%

Elapsed time: 0.23 secs
==============================
Asize: 1
Nsize: 24
Items: 100000
Nodes: 100000
Average items per node: 1
Node utilization: 100%

Elapsed time: 38.2 secs
==============================
Asize: 2
Nsize: 32
Items: 100000
Nodes: 61400
Average items per node: 1.629
Node utilization: 81.4%

Elapsed time: 21.67 secs
==============================
Asize: 4
Nsize: 40
Items: 100000
Nodes: 33250
Average items per node: 3.008
Node utilization: 75.2%

Elapsed time: 9.24 secs
==============================
Asize: 8
Nsize: 56
Items: 100000
Nodes: 17370
Average items per node: 5.757
Node utilization: 72%

Elapsed time: 4.44 secs
==============================
Asize: 16
Nsize: 88
Items: 100000
Nodes: 8856
Average items per node: 11.29
Node utilization: 70.6%

Elapsed time: 2.46 secs
==============================
Asize: 32
Nsize: 152
Items: 100000
Nodes: 4410
Average items per node: 22.68
Node utilization: 70.9%

Elapsed time: 1.22 secs
==============================
Asize: 64
Nsize: 280
Items: 100000
Nodes: 2220
Average items per node: 45.05
Node utilization: 70.4%

Elapsed time: 0.6 secs
==============================
Asize: 128
Nsize: 536
Items: 100000
Nodes: 1085
Average items per node: 92.17
Node utilization: 72%

Elapsed time: 0.3 secs
==============================
Asize: 256
Nsize: 1048
Items: 100000
Nodes: 523
Average items per node: 191.2
Node utilization: 74.7%

Elapsed time: 0.16 secs
==============================
Asize: 512
Nsize: 2072
Items: 100000
Nodes: 257
Average items per node: 389.1
Node utilization: 76%

Elapsed time: 0.1 secs
==============================
Asize: 1024
Nsize: 4120
Items: 100000
Nodes: 128
Average items per node: 781.2
Node utilization: 76.3%

Elapsed time: 0.1 secs
==============================
Asize: 2048
Nsize: 8216
Items: 100000
Nodes: 64
Average items per node: 1562
Node utilization: 76.3%

Elapsed time: 0.15 secs
==============================
Asize: 4096
Nsize: 16408
Items: 100000
Nodes: 32
Average items per node: 3125
Node utilization: 76.3%

Elapsed time: 0.27 secs
==============================