java鐗堢殑妯℃澘璇?█
鏈?繎蹇冭?鏉ユ疆錛屽紑鍙戜簡涓?釜灝忓伐鍏鳳紝涓轟簡鏂逛究浠ュ悗瀹氬埗妯℃澘錛屾墦綆椾嶠鐢ㄦā鏉胯?璦?紝涔嬪墠鍦ㄩ」鐩?腑鐢ㄨ繃freemark鍜寁elocity錛屽?浜庡畠浠?殑璇?硶閮戒笉鍠滄?錛岃繕鏄?噸閫犱釜杞?瓙鍚э紝鍝堝搱銆?/p>
鍏堣創孌典唬鐮佸惂錛?/p>
public static void main(String[] args) { String source = IO.read(new File("debug/test.html"), "UTF-8", 4096); TemplateCompiler compiler = new TemplateCompiler(source); System.out.println("source.length: " + source.length()); long t1 = System.currentTimeMillis(); Template template = compiler.compile(); long t2 = System.currentTimeMillis(); System.out.println("compile complete: " + (t2 - t1)); long t3 = System.currentTimeMillis(); for(int i = 0; i < 100; i++) { StringWriter writer = new StringWriter(); JspWriter out = new JspWriter(writer); PageContext pageContext = new PageContext(out); Map<String, Object> user = new HashMap<String, Object>(); user.put("userName", "xuesong.net"); pageContext.setAttribute("user", user); template.evaluate(pageContext); } long t4 = System.currentTimeMillis(); System.out.println("run time: " + (t4 - t3)); }妯℃澘璇?硶閲囩敤浜唈stl璇?硶錛屾槸鍥犱負鎴戞渶鍠滄?jsp鐨勬爣絳捐?娉曪紝綆?崟鏄撶敤錛屽姛鑳藉己澶ф棤鎵?笉鑳姐?鍥犳?錛岄噰鐢ㄤ簡瀹屽叏鍏煎? jsp鏍囩?鐨勬柟寮忥紝鐢ㄨ繃jstl鐨勫?杩欎釜璇?硶灝變笉闇??瀛︿簡銆傛敮鎸佽嚜瀹氫箟鏍囩?銆傚湪鎬ц兘鏂歸潰錛岄噰鐢ㄤ簡涓??緙栬瘧錛屽?嬈¤繍琛岀殑鏂瑰紡銆?/p>
el琛ㄨ揪寮忎嶠鐢ㄧ殑鏄痮gnl銆?/p>
瀹炵幇鍘熺悊錛氬?鏂囨。杩涜?緙栬瘧錛岀紪璇戝嚭涓?釜鏍戝艦緇撴瀯鐨勬枃妗o紝鎵ц?杩囩▼瀵規瘡涓?釜鑺傜偣杩涜?澶勭悊錛屾枃鏈?妭鐐圭洿鎺ヨ緭鍑猴紝鏍囩?鑺傜偣鐢卞叿浣撶殑java瀹炵幇杩涜?澶勭悊涔嬪悗鍐衝畾濡備綍杈撳嚭銆?/p>
鍥犳?鍦ㄥ?鏁翠釜鏍戝艦緇撴瀯杩涜?澶勭悊鐨勬椂鍊欐湁涓ょ?鏂瑰紡錛岀?涓??鏂規硶鏄?嶠鐢ㄩ?褰掑?鐞嗭紝杩欑?鏂瑰紡鏈?畝鍗曪紝紼嬪簭鏄撹?鎬т篃姣旇緝寮恒?浣嗘槸鍦ㄦ煇浜涙?鏋朵笅杩愯?鍙?兘浼氬?java鏍堥?鎴愭瘮杈冨ぇ鐨勫紑閿??渚嬪?鍦╯truts涓嬶紝濡傛灉浣跨敤浜嗚繃澶氱殑鎷︽埅鍣?紝欏甸潰涓?張鏈夊お澶氱殑宓屽?錛屽彲鑳藉緢蹇?氨浼氶?鎴怱tackOverFlow銆傝繕鏈変竴涓?己鐐瑰氨鏄??鏋滄煇浜涙爣絳鵑渶瑕侀〉闈㈡墽琛岀珛鍗崇粓姝?紝閫掑綊鎿嶄綔灝遍渶瑕佽?緗?竴涓?眬閮ㄥ叏灞?彉閲忥紝騫朵笖澶勫?媯?煡璇ュ彉閲忎互鍐衝畾鏄?惁絝嬪嵆緇堟?閫掑綊銆傜?浜岀?鏂規硶錛岃嚜瀹氫箟涓?釜鏍堬紝灝嗚妭鐐瑰帇鍏ユ爤涓?緷嬈″?鐞嗭紝杩欐牱閫掑綊鎿嶄綔灝卞彉鎴愪簡涓?釜寰?幆鎿嶄綔錛屽?鏋滈渶瑕佺粓姝㈠?鐞嗭紝鍙?渶瑕佺畝鍗曠殑break鍗衝彲銆傛渶緇堣?鐨勬槸鍗充究欏甸潰緇撴瀯寰堝?鏉備篃涓嶄細瀵瑰綋鍓嶇嚎紼嬬殑鏍堥?鎴愬緢澶х殑寮?攢銆?/p>
鐩?墠鍩烘湰鍔熻兘宸茬粡瀹屾垚錛屾?鍦ㄥ仛鎬ц兘浼樺寲銆傜洰鍓嶇殑琛ㄧ幇鏈夌偣涓嶅お婊℃剰錛屼竴涓?0K澶у皬鐨勬枃妗o紝緙栬瘧澶ф?闇??300姣??錛屾瘡嬈℃墽琛屽ぇ姒傞渶瑕?0姣??銆傛墽琛屽凡緇忔病鏈変紭鍖栫殑浣欏湴浜嗭紝闈欐?鍐呭?鐨勮緭鍑哄熀鏈?槸綰?補鐨処O鎿嶄綔錛岃繖涓?槸鍦ㄥ唴瀛樹腑澶勭悊鐨勩?鍔ㄦ?鐨勫唴瀹歸?杈戞槸java浠g爜錛屼篃涓嶅彲鑳戒紭鍖栦簡銆?/p>
