From 697170b4968373d70193c4719ef2c4d8bf810ceb Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Tue, 31 Jan 2012 19:28:34 +0000 Subject: Remove call to queue:len/1 queue:len/1 is O(len(Q)) queue:out/1 is O(1) amortized, O(len(Q)) worst case Replace with a pattern match --- src/cowboy_listener.erl | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/cowboy_listener.erl b/src/cowboy_listener.erl index b12e059..de81cbe 100644 --- a/src/cowboy_listener.erl +++ b/src/cowboy_listener.erl @@ -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. -- cgit v1.2.3