Hi guys,<div><br></div><div>Thank you guys for all your replies.</div><div><br></div><div>I think I will go with my own implementation. The only thing I cannot understand, why you suggest using ETS for this? Why keeping data in the state is not ok? I think on heavy load the state approach will perform better than ETS. Moreover, I think ETS is overkill for this task.</div>

<div><br></div><div>p.s. In my case XX minutes wont exceed 120.</div><div><br clear="all"><div>Best regards,</div><div>Max</div><br><br>
<br><br><div class="gmail_quote">On Sat, Aug 25, 2012 at 12:05 AM, Mike Oxford <span dir="ltr"><<a href="mailto:moxford@gmail.com" target="_blank">moxford@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

If you care about, as you say, "certain minute" you can use Ulf's gproc.  If you want "last minute" then the ETS solution below will work well, with the modification on the Counter to use a ms/us timer like erlang:now().<div>


<div><br></div><div>-mox<div><div class="h5"><br><br><div class="gmail_quote">On Fri, Aug 24, 2012 at 8:14 AM, Anders Nygren <span dir="ltr"><<a href="mailto:anders.nygren@gmail.com" target="_blank">anders.nygren@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Use an ETS table with {Counter,{YYYY,MM,DD,HH,MM}} as key, and<br>
ets:update_counter/2,3.<br>
update_counter returns the new counter value, so if it is 1, (or the<br>
increment used) You know that a new minute has been entered so You can<br>
delete the oldest.<br>
<br>
/Anders<br>
<div><div><br>
On Fri, Aug 24, 2012 at 9:16 AM, Max Bourinov <<a href="mailto:bourinov@gmail.com" target="_blank">bourinov@gmail.com</a>> wrote:<br>
> Dear Erlangers,<br>
><br>
> Does anybody know best memory efficient way to count events within last XX<br>
> minutes?<br>
><br>
> So far I have the following idea: For each counter I have a process. The<br>
> counter process has a list of XX items. Each item represents a certain<br>
> minute, so I always know where is my current counter. There is also must be<br>
> a mechanism to remove last item from the list and add a new one. Summing<br>
> values from all items is a number of events within last XX minutes. This is<br>
> it.<br>
><br>
> Maybe there is a ready lib that does the same in a better way?<br>
><br>
> Any suggestions are welcome!<br>
><br>
> Best regards,<br>
> Max<br>
><br>
><br>
><br>
</div></div>> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
><br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div></div></div></div>
</blockquote></div><br></div>