Currently when an event is triggered we always bubble it up the tree to the document/window even if we have never bound an event for it. For the case where we know it's not a native event (and thus cannot/should-not have inline handlers, jQuery.event.trigger should check bail out immediately. The easiest way to do this is probably an event name whitelist for now.
During the event rewrite I looked into keeping a count of *active* event attaches (rather than just non-virgin event names) but it was just too unreliable even after accounting for cloneCopyEvent etc. Counts may become impossible anyway if we start attaching data directly to elements and let them clean up after themselves.