On Apr 28, 2008, at 03:21, Marc Lehmann wrote:
On Sat, Apr 26, 2008 at 08:13:27AM -0400, Rocco Caputo <[EMAIL PROTECTED]
> wrote:
each event watcher. Anyone who knows POE can tell you this is one of
the least efficient designs possible. In fact, this design is worse
than the average for first-time POE users.
[He then called my model fundamentally broken in private mail and the
documentation rude and unprofessional, without bringing up any
evidence]
Dear perl-loop@perl.org, and anyone reading this in the archives.
I apologize for my part in this unfolding thread. As Marc mentions, I
have been trying to take it to private e-mail. However I feel that
Marc has misrepresented to the list what I said to him in private. At
this point, it's easier for me to repost what I actually said rather
than paraphrase it.
Again, I'm sorry you had to be involved.
--
Rocco Caputo - [EMAIL PROTECTED]
Begin forwarded message:
From: Rocco Caputo <[EMAIL PROTECTED]>
Date: April 27, 2008 23:29:18 EDT
To: Marc Lehmann <[EMAIL PROTECTED]>
Subject: Re: benchmarking various event loops with and without
anyevent
On Apr 27, 2008, at 01:53, Marc Lehmann wrote:
On Sun, Apr 27, 2008 at 01:15:49AM -0400, Rocco Caputo <[EMAIL PROTECTED]
> wrote:
I have read your code and documentation for AnyEvent::Impl::POE.
Your
module's design is fundamentally broken, and your code is probably
more to blame than POE.
Oh, btw, be careful with such strong idioms such as "fundemantally
broken":
so far, there is no evidence that it is broken at all, only
inefficient.
(If you think it really is fundamentally _broken_ then you better
back up
your statements).
I hope to show that I intended no offense.
Reasonable scalability (CPU and memory) seems to be one of
AnyEvent's design goals. I base this impression on the fact that
you're benchmarking your code in terms of speed and size.
"Reasonable" is subject to interpretation, but I think we agree that
AnyEvent::Impl::POE is neither as fast nor as small as it should be.
Therefore, while AnyEvent::Impl::POE operates correctly, it does not
fulfill some of AnyEvent's design goals.
AnyEvent::Impl::POE's greatest inefficiencies stem from one
fundamental design choice: the 1:1 relationship between watcher
instances and POE::Session instances. In your own words: "AnyEvent
has to create one POE::Session per event watcher, which is immensely
slow and makes watchers very large."
One point of contention may be whether this is a design or
implementation flaw. The problem is inherent in the way one class
(AnyEvent::Impl::POE) interacts with another (POE::Session). Class
interaction is a software design issue. It can be modeled in
software design languages such as UML. Re-implementing the same
entity relationship more efficiently, or in a faster language such
as C, would not resolve the scalability problem.
Therefore, AnyEvent::Impl::POE is flawed in design rather than
implementation.
Therefore, AnyEvent::Impl::POE's design prevents it from meeting
some of AnyEvent's design goals.
Therefore, AnyEvent::Impl::POE's design is broken.
Unfortunately most of AnyEvent::Impl::POE's design stems from its
flawed interaction with POE::Session. We should not need to change
AnyEvent::Impl::POE's public interface, but we will need to rethink
and revise nearly all aspects of its interaction with POE.
Therefore, AnyEvent::Impl::POE's design flaw is a fundamental one.
Therefore, AnyEvent::Impl::POE's design is fundamentally broken.
Again, let me repeat that empty insults that obviously are founded by
paranoia will not have any positive effect on your standing with me
(I
mean, I won't hate you or anything, but you make yourself an idiot
in my
eyes very quickly by repeatedly not beinging up any evidence...).
Of course, I understand that if you mistook my comments about POE
as rude,
there is a natural tendency to "insult back".
I hope I have shown reasonable evidence that my assertion is neither
empty nor intrinsically insulting. Without the intent to insult,
there can be no intent to "insult back". In the end, any offense
you have taken may be of your own manufacture. Could there be
cultural differences to overcome?
In this light, your assertion of my paranoia is unfounded, unjust
and offensive. Your view that I'm acting like an idiot is no
better. You are of course entitled to your opinions, but those two
are not appropriate for polite conversation.
...
I'm sorry that I haven't responded promptly to your e-mail. I get
the impression that you expect the worst from me, so I feel the need
to choose my words in a slow and painful (and often futile) effort
to minimize being misunderstood. As a result, I cannot write to you
as often as I would like. Nor have I had the opportunity to work
with you on the module in question (something I would much rather be
doing).
I hope we can reach a mutual understanding, if only so that we may
correspond and collaborate more effectively.
Until next time,
--
Rocco Caputo - [EMAIL PROTECTED]