Java 与 Rust 性能对比

博客作者在学习Rust语言并使用力扣平台刷题时,发现Rust的性能优于Java。同一道题目,尽管两者的代码时间复杂度和空间复杂度相同,但Rust的执行效率显著高于Java。文章提供了Java和Rust的实现代码,并附带了Rust的学习资源链接。力扣系统的性能测试结果显示了这一差异。

最近在学习 Rust 语言,然后用力扣刷题时候发现 Rust 的性能是比较好的,力扣题目如下

在这里插入图片描述
题目地址 6120. 数组能形成多少数对

Java 代码

public int[] numberOfPairs(int[] nums) {
        Map<Integer, Integer> countMap = new HashMap<>();
        for (int num : nums) {
            Integer count = countMap.computeIfAbsent(num,  k -> 0);
            countMap.put(num, ++count);
        }
        int pair = 0;
        int notPair = 0;
        for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) {
            int count = entry.getValue();
            if (count % 2 != 0) {
                notPair++;
            }
            pair = pair + count / 2;
        }
        int[] result = new int[2];
        result[0] = pair;
        result[1] = notPair;
        return result;
    }

Rust 代码

use std::collections::HashMap;

pub fn number_of_pairs(nums: Vec<i32>) -> Vec<i32> {
    let mut result = Vec::new();
    let mut count_map = HashMap::new();
    for num in nums {
        let count = count_map.get(&num);
        if count.is_none() {
            count_map.insert(num, 1);
        } else {
            count_map.insert(num, count.unwrap() + 1);
        }
    }
    let mut pair = 0;
    let mut not_pair_count = 0;
    for (num, count) in count_map {
        if count % 2 != 0 {
            not_pair_count = not_pair_count + 1;
        }
        pair = pair + count / 2;
    }
    result.push(pair);
    result.push(not_pair_count);
    return result;

}

性能对比

Java 和 Rust 的写的时间复杂度与空间复杂度一样的,多次提交之后,力扣系统给出的结果感觉到性能·差异太大了,如下图所示

在这里插入图片描述

Rust 相关学习资料

  1. Rust 官方文档中文教程
  2. rustlings
  3. Rust标准库
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chengdu.S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值