[erlang-questions] Hipe and Binary - Bitstring

Oliver Bollmann oliver.bollmann@REDACTED
Wed Mar 27 10:09:35 CET 2019

I use, with binaries like <<1:1000000>>,

one(F,<<Size:64/unsigned,Bitmap:Size/bitstring,_/bitstring>>) ->
   one(F,Bitmap,0,[]). one(F, <<0:1,R/bitstring>>,N,Acc) ->
   one(F,R,N +1,Acc);
one(F, <<1:1,R/bitstring>>,N,Acc) ->
   one(F,R,N +1, [F(N) |Acc]);
one(_, <<>>,_,Acc) ->Acc. union(<<Size:64/unsigned,L:Size/unsigned,P/bitstring>>,
     <<Size:64/unsigned,R:Size/unsigned,_/bitstring>>) ->
   <<Size:64/unsigned, (L bor R):Size/unsigned,P/bitstring>>.

and call this functions 1,000,000 times, this takes for 1,000 calls 
about 20 minutes,

if i compile with native -compile([native,{hipe, o2}])it takes 3 seconds 
for 1,000 calls, so it is about 400x faster !!


What is the secret?

Oliver Bollmann

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20190327/f944ff92/attachment.htm>

More information about the erlang-questions mailing list