① 编译一段代码的速度和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代码不能再跨平台的原因。
希望我已经解释清楚了。