From 88bd81e28787b460ec8561052a8668effc451224 Mon Sep 17 00:00:00 2001 From: Jesper Louis Andersen Date: Tue, 22 Jul 2008 15:06:00 +0200 Subject: [PATCH] use ets:update_counter for speedup. --- lib/etorrent-1.0/src/etorrent_piece_mgr.erl | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/etorrent-1.0/src/etorrent_piece_mgr.erl b/lib/etorrent-1.0/src/etorrent_piece_mgr.erl index 54b1b98..08d081d 100644 --- a/lib/etorrent-1.0/src/etorrent_piece_mgr.erl +++ b/lib/etorrent-1.0/src/etorrent_piece_mgr.erl @@ -187,11 +187,8 @@ handle_call({chunk, Id, Idx, N}, _From, S) -> ets:insert(etorrent_piece_tbl, P#piece { state = chunked, left = N}), {reply, ok, S}; handle_call({decrease_missing, Id, Idx}, _From, S) -> - %% TODO: There are faster ets: functions for this - [P] = ets:lookup(etorrent_piece_tbl, {Id, Idx}), - NewP = P#piece { left = P#piece.left - 1}, - ets:insert(etorrent_piece_tbl, NewP), - case NewP#piece.left of + case ets:update_counter(etorrent_piece_tbl, {Id, Idx}, + {#piece.left, -1}) of 0 -> {reply, full, S}; N when is_integer(N) -> {reply, ok, S} end; -- 2.11.4.GIT