Events VS just method call?
<p>One class <code>Receiver</code> receives udp datagrams (more than 1000 datagrams every second).</p>

<p>To be OOP I should likely write such code in <code>Receiver</code></p>

<pre><code>public event EventHandler&lt;NewDatagramEventArgs&gt; NewMessage;
protected virtual void OnNewMessage(NewDatagramEventArgs e)
{
    if (NewDatagram != null)
        NewDatagram(this, e);
}
....
socket.Receive(result)
....
OnNewMessage(new NewDatagramEventArgs(result));
.....
</code></pre>

<p>Then I can attach any number of <code>Consumers</code> to this class to be notified about new datagram.</p>

<p>In practice I always have exactly one consumer, so I can just write:</p>

<pre><code>socket.Receive(result);
Consumer.Instance.NewDatagram(result);
</code></pre>

<p>And I pretty need to do things fast because it's trading software where each extra millisecond is extra money.</p>

<p>How much slower the first approach is?
And how much ugly the second approach?</p>
