hipe_bifs:bitarray的使用
September 20th, 2010
1 comment
原创文章,转载请注明: 转载自系统技术非业余研究
本文链接地址: hipe_bifs:bitarray的使用
未公开的hipe_bifs:bitarray是内置的,用c语言实现的, inplace修改的,有非常高的效率.
-module(bitarray). -export([new/1, set/2, get/2]). new(Size) -> hipe_bifs:bitarray(Size, false). set(I, A) -> hipe_bifs:bitarray_update(A, I, true). get(I, A) -> hipe_bifs:bitarray_sub(A, I).
相比之下用纯erlang array模块实现的bitarray的版本
-module(bitarray). -export([new/1, set/2, get/2]). -define(W, 24). new(N) -> array:new((N-1) div ?W + 1, {default, 0}). set(I, A) -> AI = I div ?W, V = array:get(AI, A), V1 = V bor (1 bsl (I rem ?W)), array:set(AI, V1, A). get(I, A) -> AI = I div ?W, V = array:get(AI, A), V band (1 bsl (I rem ?W)) =/= 0.
大家看着用把…
Post Footer automatically generated by wp-posturl plugin for wordpress.
Recent Comments