 <p>Even if you look up the method in both cases (i.e. before 2nd and 3rd loop), the first lookup takes way less time than the second lookup, which should have been the other way around and less than a regular method call on my machine.</p> <p>Neverthless, if you use the 2nd loop with method lookup, and <code>System.out.println</code> statement, I get this:</p> <pre class="lang-none prettyprint-override"><code>regular call : 740 ms look up(2nd loop) : 640 ms look up ( 3rd loop) : 800 ms </code></pre> <p>Without <code>System.out.println</code> statement, I get:</p> <pre class="lang-none prettyprint-override"><code>regular call : 78 ms look up (2nd) : 37 ms look up (3rd ) : 112 ms </code></pre>