-
-
Save arcbbb/634323d2295a4beab1c080e0dc7bc2af to your computer and use it in GitHub Desktop.
| $ g++ count_bits.cpp -o count_bits -std=c++0x -O3 && ./count_bits | |
| count_directly : sum=7998296000, duration=5202343000 ns | |
| count_by_table : sum=7998296000, duration=3551468000 ns | |
| count_by_table8 : sum=7998296000, duration=2642850000 ns | |
| count_by_table8_unroll: sum=7998296000, duration=2241039000 ns | |
| count_by_bit_operation: sum=7998296000, duration=1354588000 ns | |
| Illegal instruction (core dumped) |
| $ ./count_bits | |
| count_directly : sum=7998963000, duration=5146620000 ns | |
| count_by_table : sum=7998963000, duration=3310482000 ns | |
| count_by_table8 : sum=7998963000, duration=2604540000 ns | |
| count_by_table8_unroll: sum=7998963000, duration=2201238000 ns | |
| count_by_bit_operation: sum=7998963000, duration=1283315000 ns | |
| Illegal instruction (core dumped) |
| $ ./count_bits | |
| count_directly : sum=7998690000, duration=2729333699 ns | |
| count_by_table : sum=7998690000, duration=2275479572 ns | |
| count_by_table8 : sum=7998690000, duration=1637013926 ns | |
| count_by_table8_unroll: sum=7998690000, duration=1408708337 ns | |
| count_by_bit_operation: sum=7998690000, duration=916563330 ns | |
| Illegal instruction: 4 |
| $ ./count_bits | |
| count_directly : sum=7998810000, duration=4240582988 ns | |
| count_by_table : sum=7998810000, duration=1652749888 ns | |
| count_by_table8 : sum=7998810000, duration=1517876331 ns | |
| count_by_table8_unroll: sum=7998810000, duration=1249412431 ns | |
| count_by_bit_operation: sum=7998810000, duration=616427661 ns | |
| count_by_popcnt : sum=7998810000, duration=152035489 ns |
$ cat /proc/cpuinfo| head -5
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 45
model name : Intel(R) Xeon(R) CPU E5-4620 0 @ 2.20GHz
$ g++ count_bits.cpp -o count_bits -std=c++0x -O3 && ./count_bits
count_directly : sum=7997333000, duration=12499840000 ns
count_by_table : sum=7997333000, duration=1352503000 ns
count_by_table8 : sum=7997333000, duration=1551636000 ns
count_by_table8_unroll: sum=7997333000, duration=1058039000 ns
count_by_bit_operation: sum=7997333000, duration=788960000 ns
count_by_popcnt : sum=7997333000, duration=138292000 ns
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 58
model name : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
$ clang++ count_bits.cpp -o count_bits -std=c++0x -O3 && ./count_bits
count_directly : sum=7999933000, duration=1944625795 ns
count_by_table : sum=7999933000, duration=918990731 ns
count_by_table8 : sum=7999933000, duration=1312130976 ns
count_by_table8_unroll: sum=7999933000, duration=899993115 ns
count_by_bit_operation: sum=7999933000, duration=596765475 ns
count_by_popcnt : sum=7999933000, duration=99913738 ns
fix @ performance governor
$ g++ count_bits.cpp -o count_bits -std=c++0x -O3 && ./count_bits
count_directly : sum=7998584000, duration=1735406395 ns
count_by_table : sum=7998584000, duration=1041771294 ns
count_by_table8 : sum=7998584000, duration=1329886969 ns
count_by_table8_unroll: sum=7998584000, duration=839347291 ns
count_by_bit_operation: sum=7998584000, duration=361875445 ns
count_by_popcnt : sum=7998584000, duration=100476591 ns