[erlang-questions] How would you do 100 ifs?

Max Bourinov <>
Tue Nov 15 20:52:13 CET 2011


At the moment is works as a locally registered gen_server with code
from Knut Nesheim.
Works like a charm.

Best regards,
Max




On Tue, Nov 15, 2011 at 11:50 PM, Max Bourinov <> wrote:

> Good to know!
> That might be useful for me too.
>
> Best regards,
> Max
>
>
>
>
> On Tue, Nov 15, 2011 at 9:16 PM, Anthony Molinaro <
> > wrote:
>
>> I had a similar problem where I had to do 10182857 ifs, which I solved
>> with
>> and ordered set ets table.  I generate the table ahead of time since it
>> can
>> take a while, and use ets:file2tab/1 to read it in quickly (takes about 5
>> minutes to generate but only a few seconds to load).
>>
>> You use the start of your range as the key of the ets table, the value
>> is whatever you want, in your case you could use the top end of the range,
>> or the index.
>>
>> To look thing up you then use something like
>>
>> case ets:lookup (Tab, X) of
>>  [] ->
>>    case ets:lookup (Tab, ets:prev (Tab, X)) of
>>      [] -> out_of_range;
>>      V -> hd (V)
>>    end;
>>  V -> hd (V)
>> end
>>
>> Even with the double lookups, its still very fast (< .2 millis per
>> lookup).
>> Might be overkill for just 100 ifs but useful if you have 10 million.
>>
>> -Anthony
>>
>> PS. Thanks to Paul Mineiro and Ulf Wiger who I believe were the ones who
>> first turned me on to this technique.
>>
>> On Tue, Nov 15, 2011 at 04:27:22PM +0300, Max Bourinov wrote:
>> > Hi guys,
>> >
>> > I have a value X which is integer, and I have a list of ranges
>> > [0....200),[200....600),[600...1000)....etc....[100000, infinity] (this
>> is
>> > just an example). We can assume that the list is static.
>> >
>> > I have frequently check the index of the range X belongs to.
>> >
>> > How would you implement it in Erlang?
>> >
>> > Best regards,
>> > Max
>>
>> > _______________________________________________
>> > erlang-questions mailing list
>> > 
>> > http://erlang.org/mailman/listinfo/erlang-questions
>>
>>
>> --
>> ------------------------------------------------------------------------
>> Anthony Molinaro                           <>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20111115/d603d99e/attachment.html>


More information about the erlang-questions mailing list