summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES10
-rw-r--r--configs/extensions.conf.sample23
-rw-r--r--main/pbx.c4
3 files changed, 30 insertions, 7 deletions
diff --git a/CHANGES b/CHANGES
index 52d438a81..16755c9e8 100644
--- a/CHANGES
+++ b/CHANGES
@@ -55,6 +55,7 @@ CLI Changes
* Ability to set process limits ("ulimit") without restarting Asterisk
* Enhanced "agi debug" to print the channel name as a prefix to the debug
output to make debugging on busy systems much easier.
+ * New CLI commands "dialplan set extenpatternmatching true/false"
SIP changes
-----------
@@ -345,3 +346,12 @@ Miscellaneous
* Added a new channel driver, chan_unistim. See doc/unistim.txt and
configs/unistim.conf.sample for details. This new channel driver allows
you to use Nortel i2002, i2004, and i2050 phones with Asterisk.
+ * A new extension pattern matching algorithm, based on a trie, is introduced
+ here, that could noticeably speed up mid-sized to large dialplans.
+ It is NOT used by default, as duplicating the behaviour of the old pattern
+ matcher is still under development. A config file option, in extensions.conf,
+ in the [general] section, called "extenpatternmatchingnew", is by default
+ set to false; setting that to true will force the use of the new algorithm.
+ Also, the cli commands "dialplan set extenpatternmatchingnew true/false" can
+ be used to switch the algorithms at run time.
+
diff --git a/configs/extensions.conf.sample b/configs/extensions.conf.sample
index a5d992de1..b7a7445a0 100644
--- a/configs/extensions.conf.sample
+++ b/configs/extensions.conf.sample
@@ -36,20 +36,33 @@ writeprotect=no
;
;autofallthrough=no
;
-; By default, the old pattern matcher is used.
-
+;
+;
; If extenpatternmatchnew is set (true, yes, etc), then a new algorithm that uses
; a Trie to find the best matching pattern is used. In dialplans
; with more than about 20-40 extensions in a single context, this
; new algorithm can provide a noticeable speedup.
+; With 50 extensions, the speedup is 1.32x
+; with 88 extensions, the speedup is 2.23x
+; with 138 extensions, the speedup is 3.44x
+; with 238 extensions, the speedup is 5.8x
+; with 438 extensions, the speedup is 10.4x
; With 1000 extensions, the speedup is ~25x
; with 10,000 extensions, the speedup is 374x
-; Basically, the new algorithm provides a fairly flat response
+; Basically, the new algorithm provides a flat response
; time, no matter the number of extensions.
;
+; By default, the old pattern matcher is used.
+;
+; ****This is a new feature! *********************
; The new pattern matcher is for the brave, the bold, and
-; the desperate. If you have large dialplans, and/or high
-; call volume, you might consider setting this value to "yes" !!
+; the desperate. If you have large dialplans (more than about 50 extensions
+; in a context), and/or high call volume, you might consider setting
+; this value to "yes" !!
+; Please, if you try this out, and are forced to return to the
+; old pattern matcher, please report your reasons in a bug report
+; on bugs.digium.com. We have made good progress in providing something
+; compatible with the old matcher; help us finish the job!
;
; This value can be switched at runtime using the cli command "dialplan set extenpatternmatchnew true"
; or "dialplan set extenpatternmatchnew false", so you can experiment to your hearts content.
diff --git a/main/pbx.c b/main/pbx.c
index 419b42cfc..d3121234f 100644
--- a/main/pbx.c
+++ b/main/pbx.c
@@ -4850,7 +4850,7 @@ static char *handle_set_extenpatternmatchnew(struct ast_cli_entry *e, int cmd, s
switch (cmd) {
case CLI_INIT:
- e->command = "dialplan set extenpaternmatchnew true";
+ e->command = "dialplan set extenpatternmatchnew true";
e->usage =
"Usage: dialplan set extenpatternmatchnew true|false\n"
" Use the NEW extension pattern matching algorithm, true or false.\n";
@@ -4878,7 +4878,7 @@ static char *handle_unset_extenpatternmatchnew(struct ast_cli_entry *e, int cmd,
switch (cmd) {
case CLI_INIT:
- e->command = "dialplan set extenpaternmatchnew false";
+ e->command = "dialplan set extenpatternmatchnew false";
e->usage =
"Usage: dialplan set extenpatternmatchnew true|false\n"
" Use the NEW extension pattern matching algorithm, true or false.\n";