美文网首页Rust语言
Rust初体验,它确实有点快

Rust初体验,它确实有点快

作者: 码神手记 | 来源:发表于2020-05-02 21:03 被阅读0次

Rust初体验

写了多年的Java,某天机缘巧合之下听说了一门语言叫Rust,Rust的亲爹是Mozila,如果要和其它语言拼爹的话,实力应该还是可以的。

官方介绍如下:

Rust is blazingly fast and memory-efficient: with no runtime or garbage collector, it can power performance-critical services, run on embedded devices, and easily integrate with other languages.
Rust速度快得惊人,内存效率也很高。没有运行时或垃圾收集器,它可以为性能关键的服务提供强大支持,可以在嵌入式设备上运行,并且很容易与其他语言集成。

Rust’s rich type system and ownership model guarantee memory-safety and thread-safety — enabling you to eliminate many classes of bugs at compile-time.
Rust丰富的类型系统和所有权模型保证了内存安全性和线程安全性——使您能够在编译时消除许多各种各样的bug。

Rust has great documentation, a friendly compiler with useful error messages, and top-notch tooling — an integrated package manager and build tool, smart multi-editor support with auto-completion and type inspections, an auto-formatter, and more.
Rust的文档很强大,有一个友好的编译器,能提示一些有用的错误信息,以及一流的工具——一个集成的包管理器和构建工具,支持自动完成和类型检查的智能多项编辑器,一个自动格式化程序,等等。

我已经在上文中把今天的重点加粗标识了。打算用一个LeetCode上的算法题目来对比下Java实现和Rust实现,看看Rust是不是真的很惊人。

题目如下:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

欢迎留言讨论。微信/知乎可搜索码神手记同名账号,分享关注,共同进步。

示例1:

输入: [2,2,1]
输出: 1

示例2

输入: [4,1,2,1,2]
输出: 4

解法:利用异或运算(XOR)的特性,使用位操作进行计算。
先来一起复习下XOR的特性:

  1. 对0和任意数进行XOR运算,得到的仍然是这个数本身,即a^0=a。
  2. 对同一个数进行XOR运算,返回的结果是0。即a^a=0。
  3. XOR满足交换律和结合律。即aba=(aa)b=0^b=b。

以下是撸代码环节......

Java版本:

class Solution {
    public int singleNumber(int[] nums) {
        int result = 0;
        for (int num : nums) {
            result = result ^ num;
        }
        return result;
    }
}

Rust版本:

impl Solution {
    pub fn single_number(nums: Vec<i32>) -> i32 {
        let mut result: i32 = 0;
        for num in nums {
            result = result ^ num;
        }
        return result;
        }
}

执行结果整理到一个表格中,便于直观地对比:

语言 执行用时 内存消耗
Java 1ms 40.9MB
Rust 0ms 2.1MB

从数据来看,Rust在执行用时和内存消耗上比Java强大太多。这个例子中内存消耗的差距更明显一些。

结语

如果不谈Java和Rust背后的生态,仅从运行效率本身来看。Rust作为一门更接近底层的语言,性能比Java强也是应该的。在内存要求苛刻、GC时间苛刻的场景下不失为一个好的选择,例如嵌入式、实时股票行情场景。能不能取代C++就看Mozila怎么搞好社区和生态圈了,以及C++程序员们是否愿意付出学习成本。

我也是刚接触Rust,之后也会持续关注,希望Rust未来可期。朋友们有兴趣的话可以多多交流,共同拓宽技术广度与深度。

欢迎留言讨论。微信/知乎可搜索码神手记同名账号,分享关注,共同进步。

相关文章

  • Rust初体验,它确实有点快

    Rust初体验 写了多年的Java,某天机缘巧合之下听说了一门语言叫Rust,Rust的亲爹是Mozila,如果要...

  • Rust初体验

    现在我们已经安装好了rust,让我们开始第一个rust程序。任何一门新的语言总是从打印"Hello world"开...

  • Rust初体验

    我们将在新的 Rust 开发环境中编写一个小应用。首先用 Cargo 创建一个新项目。在您的终端中执行: carg...

  • Go的优势与不足

    编译时间:绝对快,可以确定要比 Rust 快得多。但实际上,它并没有我预期的那么快(对于中型到大型项目,我感觉它的...

  • summary

    Rust 并没有空值,不过它确实拥有一个可以编码 存在或不存在概念的枚举。这个枚举是 Option ,而且它...

  • rust 开篇

    1、rust 语言特点 Rust 基于C++,理论上来说,它的速度与 C / C++ 同级 Rust 被设计为保证...

  • rust ownership

    所有权(系统)是 Rust 最为与众不同的特性,它让 Rust 无需垃圾回收(garbage collector)...

  • Rust 所有权

    认识所有权 所有权是 rust独特的功能,它让 rust无需垃圾回收即可保证内存安全。 什么是所有权 Rust核心...

  • Rust的初体验1

    1. 什么是Rust? Rust 是一种系统编程语言。 它具有惊人的运行速度,能够防止程序错误,并保证了线程安全。...

  • Rust中的作用域及作用域的规则

    [TOC] Rust中的作用域及作用域的规则 所有权是 Rust 最独特的特性,它使 Rust 能够在不需要 GC...

网友评论

    本文标题:Rust初体验,它确实有点快

    本文链接:https://www.haomeiwen.com/subject/fhelghtx.html