There will be some overhead, because for
is a language construct, and <c:foreach>
will not be compiled to a just a for
loop.
A JSTL tag is just like other tags, they are executed by container, and container will invoke their life-cycle and callback methods.
If you look at the generated source code of a JSP in a container (such as Tomcat, or WebLogic), you can see that using a simple tag has lots of overhead.
But I believe this overhead is not comparable to your data-access, network, and ... delays. So ignore this little delay, and use JSTL and tags to make your JSP more readable and maintainable.
Updated:
By the way when you use JSTL (or other tag libraries) you usually use JSP EL too, and evaluation of EL has a little overhead. But again these overheads do not count compared to data-access, network latency and ....