Skip to content

Instantly share code, notes, and snippets.

@arcbbb
Last active October 18, 2016 14:01
Show Gist options
  • Select an option

  • Save arcbbb/634323d2295a4beab1c080e0dc7bc2af to your computer and use it in GitHub Desktop.

Select an option

Save arcbbb/634323d2295a4beab1c080e0dc7bc2af to your computer and use it in GitHub Desktop.
Test result
$ 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
@milksleisure
Copy link

$ 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

@milksleisure
Copy link

$ 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment