想问个关于go 语言 和 java 之间的问题
如下是leetcode 上的一题
描述:上面我使用摩尔投票的算法进行求解,我分别用go ,java 按照相同的逻辑 进行过编码
问题:
按道理来说(我自己的理解)go 是直接编译成机器语言来执行,java 是 编译成class 文件后 由jvm 解释执行
理论上 go 语言的执行速度应该快于java ,为什么我发现并不是如此,只有内存 方面go 比 java 要节省不少,我想知道是为什么,难道go 语言性能是不如java 的吗?本人也不太懂,目前在学习这两个语言,遇到这个问题希望有专家解答一下;
这是两个语言对同一个题的,同一种解法的不同执行速度,,我发现,不止一个题是这样,很多题都是这样的结果,我很疑惑,一个号称系统级的静态编程语言,的执行速度,居然没有一个需要编译后解释执行的语言执行速度快;
这是go 语言实现代码:
func majorityElement(nums []int) int {
var mjor, count int = nums[0], 1 // 候选元素 ,票数
for i := 1; i < len(nums); i++ {
if count == 0 { // 得票为0,直接设置候选元素为当前元素
mjor, count = nums[i], 1
} else if nums[i] == mjor { // 候选元素加一票
count++
} else { // 候选元素票数减一
count--
}
}
return mjor
}
这是java 语言的实现代码:
public class Solution {
public int majorityElement(int[] nums) {
int major = nums[0], count = 1;
for (int i = 1; i < nums.length; i++) {
if (count == 0) {
major = nums[i];
count = 1;
} else if (major == nums[i]) {
count++;
} else {
count--;
}
}
return major;
}
}