From e8984a90331ed926753dc881fffe2e051c5704e1 Mon Sep 17 00:00:00 2001 From: Andy Hobbs Date: Fri, 13 Sep 2013 09:56:38 +0100 Subject: [PATCH] Profiles and optimised EventManager::listeners() function, reducing execution time by 14.5% Refs #2105 --- lib/Cake/Event/CakeEventManager.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/Cake/Event/CakeEventManager.php b/lib/Cake/Event/CakeEventManager.php index 799e0b733..354497935 100644 --- a/lib/Cake/Event/CakeEventManager.php +++ b/lib/Cake/Event/CakeEventManager.php @@ -267,7 +267,18 @@ class CakeEventManager { if (empty($this->_listeners[$eventKey])) { return array(); } - ksort($this->_listeners[$eventKey]); + + $listeners = $this->_listeners[$eventKey]; + foreach ($globalListeners as $priority => $priorityQ) { + if (!empty($listeners[$priority])) { + $listeners[$priority] = array_merge($listeners[$priority], $priorityQ); + unset($globalListeners[$priority]); + } + + $listeners = $listeners + $globalListeners; + } + + ksort($listeners); $result = array(); foreach ($this->_listeners[$eventKey] as $priorityQ) { $result = array_merge($result, $priorityQ);