Skip to content

Commit

Permalink
Remove call to queue:len/1
Browse files Browse the repository at this point in the history
queue:len/1 is O(len(Q))
queue:out/1 is O(1) amortized, O(len(Q)) worst case

Replace with a pattern match
  • Loading branch information
puzza007 committed Jan 31, 2012
1 parent 0c3cf80 commit 697170b
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions src/cowboy_listener.erl
Expand Up @@ -202,11 +202,10 @@ remove_pid(Pid, Pools, ReqsTable, Queue) ->
{Pool, NbConns} = lists:keyfind(Pool, 1, Pools),
Pools2 = [{Pool, NbConns - 1}|lists:keydelete(Pool, 1, Pools)],
ets:delete(ReqsTable, Pid),
case queue:len(Queue) of
0 ->
{Pools2, Queue};
_ ->
{{value, Client}, Queue2} = queue:out(Queue),
case queue:out(Queue) of
{{value, Client}, Queue2} ->
gen_server:reply(Client, ok),
{Pools2, Queue2}
{Pools2, Queue2};
_ ->
{Pools2, Queue}
end.

0 comments on commit 697170b

Please sign in to comment.