① 編譯一段代碼的速度和CPU的線程核心和代碼的速度有關嗎如果編譯一個QQ大小的代碼需要多長時間啊
1cpu的速度跟核心數量有關嗎?是否數量越多就越快呢?只有在同一家族的CPU中進行比較,核心數量、主頻與CPU的運行速度才有正比關系,還有影響的因素是2、3級緩存的大小。核心版本和工藝的升級也有影響。一般在同一家族的CPU中,核心越多、主頻越高、緩存越多、版本越新的CPU越快。比如AMDAthlonIIX2250肯定要比AMDAthlonIIX2240要快,但是不是也一定強於主頻、緩存、核心數都與X2240差不多的IntelPentiumE6300呢?那就不能武斷的說了。需要用各種測試軟體去驗證。2同核心數目,同主頻,同二級緩存哪個快?主板配cpu是看針腳和前端匯流排,和cpu的二級緩存無關,865的主板如果是478介面的,那就支持P42.8E和P43.2C,何況主板和cpu前端匯流排都是800mhz,完美支持兩個比當然是P43.2C好了,雖然P42.8e是1024的二級緩存,但核心是Prescott內核,和A的核心一樣,發熱量大,功耗高,而C的核心是NORTHWOOD核心,比Prescott好
② java 代碼的運行效率是由Java虛擬機決定,還是由我們的PC速度決定
運行效率分兩個部分,一個是編譯的效率,一個是執行的效率。
編譯的效率是由jvm和pc兩部分影響的,編譯後的class文件的執行速度就完全由pc決定了,這個和你的代碼中是否有循環沒有直接關系,執行所耗費的時間是按照計算機計算一個二進制基礎運算的基礎來衡量的。這裡面還有class文件解釋成機器碼的時間,這個就是按語句的多少來算了,因為java是逐行逐句解釋的。所以我們說class文件的運行時間也包含了class文件解釋成機器碼的時間。
不過java運行效率再快,也沒有c代碼快,這個不是說c代碼精煉就運行快的原因。
java代碼通過jvm編譯成class文件,這時候還不能說是編譯成機器碼了,class碼呢還是一種中間碼,還需要被解釋成機器碼,這也是為什麼java是跨平台的語言的原因。而c代碼,只需要直接一次性編譯成機器碼就可以了。這也是為什麼在某種平台下寫的c代碼不能再跨平台的原因。
希望我已經解釋清楚了。