re: 一點小感想:為什么那么多人說Java慢??? murainwood 2008-12-08 21:38
影響Java性能的一個重要原因--垃圾收集。
僅僅是原始類型的重復計算,確實無法比出快慢。
我的團隊今年年初做了一個項目,就涉及到這個問題。32位JVM有效管理的Heap,最好不要超過1G。不然一次Full GC,真能把應用給阻塞住。
兩年前寫的東西,現在看來,太過于幼稚啦。
丑陋的實現。后臺就是后臺,前臺就是前臺。JavaScript+HTML+Ajax提交,想做成什么就做成什么。反正是提交一串數據,服務器返回一串數據,多么簡單和清晰。Java也好,靜態索引文件也好,PHP也好,ASP也好,CGI 也好...明白其中HTTP的原理,明白HTML的原理,這種小玩意兒信手拈來,有必要這樣做么?
前臺就是前臺,后臺就是后臺,能解耦,盡量解耦
re: 繼續鞏固Java基礎,一道綜合題 murainwood 2006-09-20 21:08
我的觀點是可以反過來想。
下面是我寫的代碼
//:~To compare the reference of string
public class StringConstPool {
/**
* @param args
*/
public static void main(String[] args) {
String the1st="hello";
String the2ed="hello";
//the result is "the two string are Same"
//so i'm sure the the1st and the2ed refer the same address
System.out.println("The two strings are "+(the1st==the2ed?"Same":"Different"));
String the3ed=new String("hello");
//the result is different from upper
//so the the3ed refers another address,thought they have
System.out.println("The two strings are "+(the1st==the3ed?"Same":"Different"));
}
}
可以看到,變量the1st 和 the2ed 所指的地址是一樣的。而the3ed則是另外的地址。
我認為的常量池的觀點是正確的,String the2ed="hello"這語句甚至一個對象實例都沒有創造!
這是JDK API中文版的說明:
String
public String(String original)初始化一個新創建的 String 對象,表示一個與該參數相同的字符序列;換句話說,新創建的字符串是該參數字符串的一個副本。由于 String 是不可變的,不必使用該構造方法,除非需要 original 的 顯式副本。
很明白了吧?
re: 繼續鞏固Java基礎,一道綜合題 murainwood 2006-09-20 17:36
"Hello"如果是第一次出現,會生成一個新的實例,然后放入常量Pool中。
調用了new 語句,總能新生成一個對象實例。
所以 String a="Hello"和 String a=new String("Hello")是不同的。而且后者被認為是"劣質代碼"
而a+="World";這個你可以用javap -c 來看JVM匯編碼。
String做所謂的"連接"時,總是通過臨時變量 StringBuffer 或StringBuilder來實現的。(后者是JDK5.0中的新類,是一個多線程不安全的StringBuffer)
re: 一點小感想:為什么那么多人說Java慢??? murainwood 2006-08-01 06:02
Java的速度快是相對的,不是絕對的。換而言之,Java的速度慢也是一樣道理。效率~~
re: 有感于論壇上關于J#的討論 murainwood 2006-08-01 06:00
糾正一點,C#,作為.NET原生語言,是最好的。
Java上的Groovy,JPython,速度慢得可憐。
語言的速度,還是存在的。
以前想得太樂觀
re: 一點小感想:為什么那么多人說Java慢??? murainwood 2006-06-29 14:47
Java無法進行底層開發是因為其運行機制的緣故罷了,說“Java因為速度慢而無法進行底層開發”,這句話沒有邏輯可言。不能因為Java無法開發操作系統而來說明Java的速度慢。
而且底層開發C用得更多,極少有操作系統用C++寫的。
re: 一點小感想:為什么那么多人說Java慢??? murainwood 2006-06-29 14:39
Java的就是以內存換速度的
現在的內存好像已經蠻便宜了吧?再者,我想現在你也不會用256M內存的機器來使用oracle10。
C語言是必不可少的(操作系統,游戲引擎),但是C++的地位卻有些“尷尬”,不是么?STL庫讓曾經C++達到巔峰,然而巔峰之后?曾經有段時間我非常喜歡STL,然而STL的語法風格實在是欠缺優美
C++/CLI被標準委員會否決,實在太讓人失望了。
re: 一點小感想:為什么那么多人說Java慢??? murainwood 2006-06-29 14:30
@fjchenq
如果你了解C++的new 和 delete的底層機制,就會知道
他們就是調用malloc和free來實現的
C/C ++里面的內存分配和銷毀,實質上全是malloc 和 free.
C++為了安全的考慮,“包裝”了這兩個函數。在STL則是更進一步“包裝”