Population count comparison for Cortex A57 (AMD Opteron A1100)
Generated on: 2017-04-26
CPU: Cortex A57 (AMD Opteron A1100)
Compiler: GCC 4.8.5 (SUSE Linux)
Instruction set: 64-bit
Number of runs: 5
All times are given in seconds .
procedure
description
lookup-8
lookup in std::uint8_t[256] LUT
lookup-64
lookup in std::uint64_t[256] LUT
bit-parallel
naive bit parallel method
bit-parallel-optimized
a bit better bit parallel
bit-parallel-mul
bit-parallel with fewer instructions
bit-parallel32
naive bit parallel method (32 bit)
bit-parallel-optimized32
a bit better bit parallel (32 bit)
harley-seal
Harley-Seal popcount (4th iteration)
builtin-popcnt
builtin for popcnt
builtin-popcnt32
builtin for popcnt (32-bit variant)
builtin-popcnt-unrolled
unrolled builtin-popcnt
builtin-popcnt-unrolled32
unrolled builtin-popcnt32
neon-vcnt
ARM Neon using VCNT
neon-HS
Harley-Seal using Neon VCNT
procedure
32 B
64 B
128 B
256 B
512 B
1024 B
2048 B
4096 B
lookup-8
0.41787
0.45607
0.41489
0.39577
0.61790
0.61055
0.60647
0.60454
lookup-64
0.43253
0.49135
0.44576
0.42294
0.65849
0.64935
0.64481
0.64255
bit-parallel
0.30289
0.29128
0.28541
0.28098
0.46077
0.45165
0.44633
0.44479
bit-parallel-optimized
0.24403
0.23538
0.22509
0.21993
0.36248
0.35306
0.34765
0.34601
bit-parallel-mul
0.18127
0.16303
0.18097
0.16403
0.24538
0.23758
0.23244
0.23074
bit-parallel32
0.48844
0.46781
0.46343
0.48252
0.75325
0.74382
0.73821
0.73675
bit-parallel-optimized32
0.42078
0.41338
0.40973
0.42809
0.66731
0.65847
0.65347
0.65185
harley-seal
0.31778
0.22949
0.13094
0.10151
0.13887
0.12710
0.12328
0.11931
builtin-popcnt
0.42566
0.41951
0.39661
0.48328
0.58800
0.75823
0.58927
0.75447
builtin-popcnt32
0.75916
0.75910
0.73265
0.71937
1.14041
1.13514
1.13248
1.50763
builtin-popcnt-unrolled
0.40597
0.35898
0.34573
0.33173
0.52616
0.51722
0.51281
0.69827
builtin-popcnt-unrolled32
0.74735
0.69167
0.66363
0.65538
1.03274
1.02479
1.02082
1.39523
neon-vcnt
0.59436
0.47962
0.08994
0.07477
0.10654
0.10173
0.09981
0.09615
neon-HS
0.76199
0.58971
0.47629
0.09548
0.13181
0.11593
0.11017
0.10725
procedure
time [s]
relative time (less is better)
lookup-8
0.41787
███████████████████████████▍
lookup-64
0.43253
████████████████████████████▍
bit-parallel
0.30289
███████████████████▊
bit-parallel-optimized
0.24403
████████████████
bit-parallel-mul
0.18127
███████████▉
bit-parallel32
0.48844
████████████████████████████████
bit-parallel-optimized32
0.42078
███████████████████████████▌
harley-seal
0.31778
████████████████████▊
builtin-popcnt
0.42566
███████████████████████████▉
builtin-popcnt32
0.75916
█████████████████████████████████████████████████▊
builtin-popcnt-unrolled
0.40597
██████████████████████████▋
builtin-popcnt-unrolled32
0.74735
█████████████████████████████████████████████████
neon-vcnt
0.59436
███████████████████████████████████████
neon-HS
0.76199
██████████████████████████████████████████████████
procedure
time [s]
relative time (less is better)
lookup-8
0.45607
██████████████████████████████
lookup-64
0.49135
████████████████████████████████▎
bit-parallel
0.29128
███████████████████▏
bit-parallel-optimized
0.23538
███████████████▌
bit-parallel-mul
0.16303
██████████▋
bit-parallel32
0.46781
██████████████████████████████▊
bit-parallel-optimized32
0.41338
███████████████████████████▏
harley-seal
0.22949
███████████████
builtin-popcnt
0.41951
███████████████████████████▋
builtin-popcnt32
0.75910
██████████████████████████████████████████████████
builtin-popcnt-unrolled
0.35898
███████████████████████▋
builtin-popcnt-unrolled32
0.69167
█████████████████████████████████████████████▌
neon-vcnt
0.47962
███████████████████████████████▌
neon-HS
0.58971
██████████████████████████████████████▊
procedure
time [s]
relative time (less is better)
lookup-8
0.41489
████████████████████████████▎
lookup-64
0.44576
██████████████████████████████▍
bit-parallel
0.28541
███████████████████▍
bit-parallel-optimized
0.22509
███████████████▎
bit-parallel-mul
0.18097
████████████▎
bit-parallel32
0.46343
███████████████████████████████▋
bit-parallel-optimized32
0.40973
███████████████████████████▉
harley-seal
0.13094
████████▉
builtin-popcnt
0.39661
███████████████████████████
builtin-popcnt32
0.73265
██████████████████████████████████████████████████
builtin-popcnt-unrolled
0.34573
███████████████████████▌
builtin-popcnt-unrolled32
0.66363
█████████████████████████████████████████████▎
neon-vcnt
0.08994
██████▏
neon-HS
0.47629
████████████████████████████████▌
procedure
time [s]
relative time (less is better)
lookup-8
0.39577
███████████████████████████▌
lookup-64
0.42294
█████████████████████████████▍
bit-parallel
0.28098
███████████████████▌
bit-parallel-optimized
0.21993
███████████████▎
bit-parallel-mul
0.16403
███████████▍
bit-parallel32
0.48252
█████████████████████████████████▌
bit-parallel-optimized32
0.42809
█████████████████████████████▊
harley-seal
0.10151
███████
builtin-popcnt
0.48328
█████████████████████████████████▌
builtin-popcnt32
0.71937
██████████████████████████████████████████████████
builtin-popcnt-unrolled
0.33173
███████████████████████
builtin-popcnt-unrolled32
0.65538
█████████████████████████████████████████████▌
neon-vcnt
0.07477
█████▏
neon-HS
0.09548
██████▋
procedure
time [s]
relative time (less is better)
lookup-8
0.61790
███████████████████████████
lookup-64
0.65849
████████████████████████████▊
bit-parallel
0.46077
████████████████████▏
bit-parallel-optimized
0.36248
███████████████▉
bit-parallel-mul
0.24538
██████████▊
bit-parallel32
0.75325
█████████████████████████████████
bit-parallel-optimized32
0.66731
█████████████████████████████▎
harley-seal
0.13887
██████
builtin-popcnt
0.58800
█████████████████████████▊
builtin-popcnt32
1.14041
██████████████████████████████████████████████████
builtin-popcnt-unrolled
0.52616
███████████████████████
builtin-popcnt-unrolled32
1.03274
█████████████████████████████████████████████▎
neon-vcnt
0.10654
████▋
neon-HS
0.13181
█████▊
procedure
time [s]
relative time (less is better)
lookup-8
0.61055
██████████████████████████▉
lookup-64
0.64935
████████████████████████████▌
bit-parallel
0.45165
███████████████████▉
bit-parallel-optimized
0.35306
███████████████▌
bit-parallel-mul
0.23758
██████████▍
bit-parallel32
0.74382
████████████████████████████████▊
bit-parallel-optimized32
0.65847
█████████████████████████████
harley-seal
0.12710
█████▌
builtin-popcnt
0.75823
█████████████████████████████████▍
builtin-popcnt32
1.13514
██████████████████████████████████████████████████
builtin-popcnt-unrolled
0.51722
██████████████████████▊
builtin-popcnt-unrolled32
1.02479
█████████████████████████████████████████████▏
neon-vcnt
0.10173
████▍
neon-HS
0.11593
█████
procedure
time [s]
relative time (less is better)
lookup-8
0.60647
██████████████████████████▊
lookup-64
0.64481
████████████████████████████▍
bit-parallel
0.44633
███████████████████▋
bit-parallel-optimized
0.34765
███████████████▎
bit-parallel-mul
0.23244
██████████▎
bit-parallel32
0.73821
████████████████████████████████▌
bit-parallel-optimized32
0.65347
████████████████████████████▊
harley-seal
0.12328
█████▍
builtin-popcnt
0.58927
██████████████████████████
builtin-popcnt32
1.13248
██████████████████████████████████████████████████
builtin-popcnt-unrolled
0.51281
██████████████████████▋
builtin-popcnt-unrolled32
1.02082
█████████████████████████████████████████████
neon-vcnt
0.09981
████▍
neon-HS
0.11017
████▊
procedure
time [s]
relative time (less is better)
lookup-8
0.60454
████████████████████
lookup-64
0.64255
█████████████████████▎
bit-parallel
0.44479
██████████████▊
bit-parallel-optimized
0.34601
███████████▍
bit-parallel-mul
0.23074
███████▋
bit-parallel32
0.73675
████████████████████████▍
bit-parallel-optimized32
0.65185
█████████████████████▌
harley-seal
0.11931
███▉
builtin-popcnt
0.75447
█████████████████████████
builtin-popcnt32
1.50763
██████████████████████████████████████████████████
builtin-popcnt-unrolled
0.69827
███████████████████████▏
builtin-popcnt-unrolled32
1.39523
██████████████████████████████████████████████▎
neon-vcnt
0.09615
███▏
neon-HS
0.10725
███▌
procedure
32 B
64 B
128 B
256 B
512 B
1024 B
2048 B
4096 B
lookup-8
1.00
1.00
1.00
1.00
1.00
1.00
1.00
1.00
lookup-64
0.97
0.93
0.93
0.94
0.94
0.94
0.94
0.94
bit-parallel
1.38
1.57
1.45
1.41
1.34
1.35
1.36
1.36
bit-parallel-optimized
1.71
1.94
1.84
1.80
1.70
1.73
1.74
1.75
bit-parallel-mul
2.31
2.80
2.29
2.41
2.52
2.57
2.61
2.62
bit-parallel32
0.86
0.97
0.90
0.82
0.82
0.82
0.82
0.82
bit-parallel-optimized32
0.99
1.10
1.01
0.92
0.93
0.93
0.93
0.93
harley-seal
1.31
1.99
3.17
3.90
4.45
4.80
4.92
5.07
builtin-popcnt
0.98
1.09
1.05
0.82
1.05
0.81
1.03
0.80
builtin-popcnt32
0.55
0.60
0.57
0.55
0.54
0.54
0.54
0.40
builtin-popcnt-unrolled
1.03
1.27
1.20
1.19
1.17
1.18
1.18
0.87
builtin-popcnt-unrolled32
0.56
0.66
0.63
0.60
0.60
0.60
0.59
0.43
neon-vcnt
0.70
0.95
4.61
5.29
5.80
6.00
6.08
6.29
neon-HS
0.55
0.77
0.87
4.15
4.69
5.27
5.50
5.64
Download arm-64bit-gcc4.8.5.csv