From c81cd8550d46ab3823cd132b1a7acafe6ebb9cd8 Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Thu, 6 May 2021 16:53:51 +0200 Subject: [PATCH] perf(trie): do not call ets:info/2 to check if table is empty emqx_trie table is a ordered_set, with write_concurrency set to true, the counter is not centrialsed, the ets:info/2 call to check size == 0 is very expensive --- src/emqx_trie.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emqx_trie.erl b/src/emqx_trie.erl index e8a51b8ef..8ece333b0 100644 --- a/src/emqx_trie.erl +++ b/src/emqx_trie.erl @@ -122,7 +122,7 @@ match(Topic) when is_binary(Topic) -> %% @doc Is the trie empty? -spec(empty() -> boolean()). -empty() -> ets:info(?TRIE, size) == 0. +empty() -> ets:first(?TRIE) =:= '$end_of_table'. -spec lock_tables() -> ok. lock_tables() ->