Hamming Weight

lua-users home
wiki

Difference (from revision 3 to current revision) (minor diff)

Changed: 6,10c6,14
Lua 5.2.0/bit32, Intel Xeon, 2012-03-17
hw_simple: 8.7E-06 8.7E-06 8.8E-06 s
hw_pc2: 2.0E-06 2.0E-06 2.0E-06 s
hw_t4: 1.3E-06 1.3E-06 1.3E-06 s
hw_wegner: 4.3E-06 4.3E-06 4.2E-06 s
Lua 5.2.0/bit32, Intel Xeon, 2012-03-22
hw_simple: 5.9E-06 5.9E-06 5.9E-06 s
hw_dc2bit: 1.7E-06 1.7E-06 1.7E-06 s
hw_dc3bit: 1.5E-06 1.5E-06 1.5E-06 s
hw_dc4bit: 1.8E-06 1.8E-06 1.8E-06 s
hw_dci: 1.7E-06 1.7E-06 1.7E-06 s
hw_lut8: 1.2E-06 1.2E-06 1.2E-06 s
hw_lut8a: 5.4E-07 5.4E-07 5.3E-07 s
hw_wegner: 2.9E-06 2.9E-06 2.9E-06 s

Changed: 12,16c16,24
LuaJIT 2.x/bit git2012-03-17, Intel Xeon, 2012-03-17
hw_simple: 1.3E-07 1.4E-07 1.3E-07 s
hw_pc2: 2.4E-09 2.4E-09 2.4E-09 s
hw_t4: 8.4E-08 8.4E-08 8.4E-08 s
hw_wegner: 7.4E-08 7.3E-08 7.4E-08 s
LuaJIT 2.x/bit git2012-03-17, Intel Xeon, 2012-03-22
hw_simple: 6.9E-08 6.9E-08 6.9E-08 s
hw_dc2bit: 1.9E-09 1.9E-09 1.9E-09 s
hw_dc3bit: 1.8E-09 1.8E-09 1.8E-09 s
hw_dc4bit: 2.0E-09 2.0E-09 2.0E-09 s
hw_dci: 1.8E-09 1.8E-09 1.8E-09 s
hw_lut8: 1.7E-09 1.7E-09 1.7E-09 s
hw_lut8a: 8.2E-09 8.2E-09 8.2E-09 s
hw_wegner: 6.0E-08 5.9E-08 5.9E-08 s

The hamming weight of a bitwise integer is the number of 1's in the binary representation [1].

Benchmark tests of various ways to calculate it are in [hamming_weight_test.lua]:

Lua 5.2.0/bit32, Intel Xeon, 2012-03-22
 hw_simple: 5.9E-06 5.9E-06 5.9E-06 s
 hw_dc2bit: 1.7E-06 1.7E-06 1.7E-06 s
 hw_dc3bit: 1.5E-06 1.5E-06 1.5E-06 s
 hw_dc4bit: 1.8E-06 1.8E-06 1.8E-06 s
    hw_dci: 1.7E-06 1.7E-06 1.7E-06 s
   hw_lut8: 1.2E-06 1.2E-06 1.2E-06 s
  hw_lut8a: 5.4E-07 5.4E-07 5.3E-07 s
 hw_wegner: 2.9E-06 2.9E-06 2.9E-06 s

LuaJIT 2.x/bit git2012-03-17, Intel Xeon, 2012-03-22
 hw_simple: 6.9E-08 6.9E-08 6.9E-08 s
 hw_dc2bit: 1.9E-09 1.9E-09 1.9E-09 s
 hw_dc3bit: 1.8E-09 1.8E-09 1.8E-09 s
 hw_dc4bit: 2.0E-09 2.0E-09 2.0E-09 s
    hw_dci: 1.8E-09 1.8E-09 1.8E-09 s
   hw_lut8: 1.7E-09 1.7E-09 1.7E-09 s
  hw_lut8a: 8.2E-09 8.2E-09 8.2E-09 s
 hw_wegner: 6.0E-08 5.9E-08 5.9E-08 s

(smaller is better)

See Also


RecentChanges · preferences
edit · history
Last edited March 23, 2012 3:39 am GMT (diff)