using JNDI adds no overhead to HornetQ, its simply used for looking up the jms resources remotely. The only way that this would be an issue was if you were looking up the same resource every time you used it which would (say for every message send) which would be the wrong approach.
I'm sorry i forgot to mention that this overhead exists only when persistence was made true in standalone-full.xml.
If it is true, i noticed that a client using JNDI was taking more time. This does not affect the sender written with HornetQ Core Api.
If persistence is false,the JNDI sender is very quick.
I'm looking up the jndi resource only once.