[Tickets #14075] Large mailboxes takes many seconds to load and causes CPU at 100%
noreply at bugs.horde.org
noreply at bugs.horde.org
Mon Aug 3 23:28:46 UTC 2015
DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.
Ticket URL: https://bugs.horde.org/ticket/14075
------------------------------------------------------------------------------
Ticket | 14075
Created By | cunha17 at gmail.com
Summary | Large mailboxes takes many seconds to load and causes
| CPU at 100%
Queue | Horde Framework Packages
Type | Bug
State | Unconfirmed
Priority | 3. High
Milestone |
Patch | 1
Owners |
------------------------------------------------------------------------------
cunha17 at gmail.com (2015-08-03 23:28) wrote:
The library in question is Horde_Imap_Client.
The class where the performance problem reside is
Horde_Imap_Client_Data_Thread.
And the method causing the high CPU usage is _getAllIndices().
This method uses a simple iteration through _thead array (in my case
having 8088 elements) and merges the keys of each sub-array with the
previous one. So it calls array_merge and array_keys 8088 times:
protected function _getAllIndices()
{
$out = array();
reset($this->_thread);
while (list(,$v) = each($this->_thread)) {
$out = array_merge($out, array_keys($v));
}
return $out;
}
I replaced this iteration with this and the performance issue were gone:
protected function _getAllIndices()
{
return array_keys(call_user_func_array('array_replace',
$this->_thread));
}
Hope it helps and best regards,
Cristiano da Cunha Duarte
More information about the bugs
mailing list