当前在线人数18767
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 -阅读文章
未名交友
[更多]
[更多]
文章阅读:Re: bit count discussion
[同主题阅读] [版面: 葵花宝典] [作者:adven] , 2004年12月31日22:31:14
adven
进入未名形象秀
我的博客
[上篇] [下篇] [同主题上篇] [同主题下篇]

发信人: adven (冒险者), 信区: Programming
标  题: Re: bit count discussion
发信站: Unknown Space - 未名空间 (Fri Dec 31 22:32:04 2004), 转信

OK. 半决赛名单。我都采纳!

#define bit1count(bitint)                                       \
(                                                               \
  regx=(bitint),                                                \
  regx=(regx&0x55555555)+((regx&0xaaaaaaaa)>>1),                \
  regx=(regx&0x33333333)+((regx&0xcccccccc)>>2),                \
  regx=(regx&0x0f0f0f0f)+((regx&0xf0f0f0f0)>>4),                \
  regx=(regx&0x00ff00ff)+((regx&0xff00ff00)>>8),                \
  regx=(regx&0x0000ffff)+((regx&0xffff0000)>>16)                \
)

#define bit1lookup(bitint)                                      \
(                                                               \
  regx=bit1count_tab[bitint&0x000007FF],                        \
  regx+=bit1count_tab[(bitint&0x003FF800)>>11],                 \
  regx+=bit1count_tab[(bitint&0xFFC00000)>>22]                  \
)

table size 2K. 一次load进一个cacheblock/cacheline.
if it's dense bits, 常访问的table部分更小。
if it's sparse bits, 也很小。
乱来,那就没辙了。换大cache机器:)

【 在 Ringer (NFS U2) 的大作中提到: 】
: 不管是不是向量机,极限性能最后决定于你cpu里有多少个ALU,ALU的宽度和L1大小
: 你那个算法仅在L1很小,ALU很宽,使用software pipelining的时候才有可能接近或
: 者稍微超出查表性能
: 【 在 adven (冒险者) 的大作中提到: 】
: : 跟你说了。我的是向量运算!你真以为就一个或者一串integer啊!


--

        理论联系实际

※ 修改:.adven 于 Dec 31 22:45:05 修改本文.[FROM: 199.74.]
※ 来源:.Unknown Space - 未名空间 mitbbs.com.[FROM: 199.74.]

[上篇] [下篇] [同主题上篇] [同主题下篇]
[转寄] [转贴] [回信给作者] [修改文章] [删除文章] [同主题阅读] [从此处展开] [返回版面] [快速返回] [收藏] [举报]
 
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996