Various uses of body tags can make a difference in performance.
The include directive <%@ include file="somefile.html" %> is a compile-time action, so it doesn't affect runtime performance (it takes effect when the JSP is compiled into a servlet). The include action <jsp:include page="somefile.jsp" flush="true"/> is a runtime action, so it adds overhead and decreases performance. Use the include directive whenever possible.
The useBean action has a scope associated with the bean created by the action. The scope defines the lifetime of the bean. Minimize the scope to minimize the resources taken by the beane.g., <jsp:useBean id="mybean" scope="page" />. You will need to use a wider scope (request, session, or application) to use beans with pages that are included.
Custom tags have a performance cost, but they are useful. Try to minimize custom tags to only those required. BodyTags are more costly to performance than simpler custom tags. Using BodyTags to iterate on the page section contents makes the page significantly slower. (On the other hand, Jim Elliott wanted me to point out that custom tags are so much better than the alternative of mixing presentation and logic that eliminating custom tags may not be worth the performance gain.)
Redirect s (using sendRedirect( )) are slower than forwards (<jsp:forward ...>) because the browser has to make a new request for the redirect. The forward is a simple call that is internal to the servlet, and a redirect tells the browser to make a new request to the redirected target page.