The 3-5 usec overhead, with VM optimization flag, for dirty schedulers is pretty good.
What's the overhead of just passing the data through to a regular NIF? Probably gets burried in the jitter caused by cache and memory access times...
(For others, if you don't know about the Erlang VM, and didn't understand the first couple of paragraphs, dirty schedulers is a new feature that solves the problem of running user created, long running, C extension code inside the Erlang VM, without blocking the rest of the VM).