I had a feeling that some of my scripts dealing with a large number of files had become significantly slower lately, but I haven't been sure. Today I took some time to find out whether or not I was only imagining things. The results of my experiments seem to indicate that something has changed relatively recently with regards to extended globbing. I am using a Mac for the moment, and I have currently have two versions of Zsh installed: 5.0.5 and 5.2. See below for my test run. As you can see, I do some globbing in a fairly large directory (2.4 Gb and 231748 files). Notice that with a complicated glob pattern, assigning matching files to an array takes about 33 seconds under 5.2, whereas the same assignment takes about 6 seconds under 5.0.5. The speed difference with a less complicated glob (**/*) is negligable. Is there some change that could explain this difference, and is there something to do about it? The difference in speed is so large that it affects scripts that I run regularly quite a lot. The test run, I hope it's self explanatory. All commands are run from the same directory. % print -l **/* | wc -l 231748 % du -sh . 2.4G . % /usr/local/bin/zsh --version zsh 5.2 (x86_64-apple-darwin14.5.0) % /usr/local/bin/zsh -f % setopt EXTENDED_GLOB % date; myfiles=(**/*); date Sun Feb 28 20:58:12 CET 2016 Sun Feb 28 20:58:27 CET 2016 % date; myfiles=((#i)**/*~(|*/)(build|target|node|node_modules|.idea|*.min.js|*.iml|TAGS)(|/*)(-.D)); date Sun Feb 28 20:58:39 CET 2016 Sun Feb 28 20:59:12 CET 2016 % /bin/zsh --version zsh 5.0.5 (x86_64-apple-darwin14.0) % /bin/zsh -f % setopt EXTENDED_GLOB % date; myfiles=(**/*); date Sun Feb 28 21:00:43 CET 2016 Sun Feb 28 21:00:56 CET 2016 % date; myfiles=((#i)**/*~(|*/)(build|target|node|node_modules|.idea|*.min.js|*.iml|TAGS)(|/*)(-.D)); date Sun Feb 28 21:01:04 CET 2016 Sun Feb 28 21:01:10 CET 2016