Subject: | POE 1.291 had a major performance regression in "Move non-alarms out of POE::Queue::Array" |
POE had a very large performance regression between 1.289 and
1.291. I've bisected it down to "Move non-alarms out of
POE::Queue::Array." (r2898) by rcaputo
(http://github.com/bingos/poe/commit/b8372258f9).
I noticed this when we were running an App::Pocoirc bot that connects
to Hailo with POE::Component::IRC::Hailo. The configuration for the
bot is:
server: localhost
port: 60666
debug: 1
networks:
- name: freenode
local_plugins:
- [Connector]
- [Hailo, {
Talkative: 1,
Abuse_interval: 0,
Ignore_regexes: ['^,'],
Own_channel: '#failo',
Hailo_args: {
storage_class: SQLite,
brain: '/var/tmp/ramdisk/failo/failo.sqlite',
}
}]
The Hailo brain is run on a ramdisk, under 1.289 it would respond
instantly, but when I strace the process under 1.291 it takes 2-3
seconds from the time an IRC message comes over the network until the
process makes its first read() call.
Something in r2898 seems to be delaying event dispatch by that much.
As an aside, it'd be nice if all POE releases weren't deleted from the
CPAN as soon as a new release comes out. I had to go search on the
backpan to find a POE tarball that wasn't broken.