一般にシステムが動くときに使用されるコードには局所性がある(Paretoの法則? etc.)ので、システムを最適化するときにはよく使われるコードをチューニングした方が効率的です。
例: 平均して80%の処理時間を食うモジュールをチューニングして、 半分の時間で動くようになったとすると、システム全体は、 100 - (20 + 80/2) = 40% 高速化される ところが、平均して20%の処理時間しか食っていないモジュールをチューニングして、 半分の時間で動くようになるようにしても、システム全体は、 100 - (20/2 + 80) = 10% しか高速化されない
Profilerは、実際に動いているシステムがどのような順序と頻度でプログラムのモジュールを呼んでいるかを調べるソフトウェアです。
http://eclipsecolorer.sourceforge.net/index_profiler.html
<%@page contentType="text/html;charset=UTF-8" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <%@ page import="java.util.*" %> <html:html locale="true"> <head> <title><bean:message key="welcome.title"/></title> <html:base/> </head> <body bgcolor="white"> <logic:notPresent name="org.apache.struts.action.MESSAGE" scope="application"> <font color="red"> ERROR: Application resources not loaded -- check servlet container logs for error messages. </font> </logic:notPresent> <h3><bean:message key="welcome.heading"/></h3> <p><bean:message key="welcome.message"/></p> <hr/> <table border="1"> <% Properties props = System.getProperties(); %> <% List propKeyList = new ArrayList( props.keySet() ); %> <% Collections.sort(propKeyList); %> <% for( Iterator it = propKeyList.iterator() ; it.hasNext(); ){ %> <% String param = (String)it.next(); %> <tr> <th><%= param %></th> <td><%= props.getProperty( param ) %></td> </tr> <% } %> </table> </body> </html:html>私の環境では、実行結果はこのように なりました。
-XrunProfilerDLL:1 -D__PROFILER_USE_PACKAGE_FILTER=1 -D__PROFILER_TIMING_METHOD=1 -D__PROFILER_PACKAGE_FILTER=__M__sun.;__M__com.sun.;__M__java.;__M__javax.;__M__org.apache.
C:\Program Files\Java\jdk1.5.0\lib\tools.jar
C:\Program Files\Java\jre1.5.0\lib\rt.jar C:\Program Files\Java\jre1.5.0\lib\jsse.jar C:\Program Files\Java\jre1.5.0\lib\jce.jar C:\Program Files\Java\jre1.5.0\lib\charset.jar C:\eclipse\plugins\ru.nlmk.eclipse.plugins.profiler.ui\profiler_trace.jar C:\eclipse\plugins\ru.nlmk.eclipse.plugins.profiler.ui\jakarta-regexp.jar C:\eclipse\plugins\ru.nlmk.eclipse.plugins.profiler.ui\commons-lang.jar