低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Rust 1.7 带来速度快 2 倍的哈希算法及新的稳定版 API

2016 年 3 月 06 日

Rust 1.6 实现核心库的稳定之后,最近发布的Rust 1.7 改进并实现了大约40 个库函数& 方法的稳定。此外,Rust 包管理器Cargo 新增两个更好的依赖处理特性。

Rust 1.7 一个最重要的变化是允许使用标准库的HashMap<K, V>类型自定义哈希算法,而且这些算法可以通过类型推断隐式选取。特别地,在键比较小(比如HashMap<usize, V>)的情况下,Rust 现在会使用一个新的 FNV 哈希算法进行哈希计算。按照 Rust 开发团队的说法,与使用先前默认的 SipHash 算法相比,这在为比较小的键生成哈希值时会带来 2 倍的性能提升(SipHash 算法在为比较小的键生成哈希值时不是很快)。不过,新的 FNV 哈希计算器不会像 SipHash 那样提供 DOS 攻击保护,因此最好是知道,在哈希初始化时指定希望使用的哈希计算器,可以覆盖推断出的默认哈希计算器:

复制代码
type MyHasher = BuildHasherDefault<SipHasher>;
fn main() {
let mut map: HashMap<_, _, MyHasher> = HashMap::default();
...
}

Rust 1.7 带来的其他改进包括:

  • <[T]>::clone_from_slice() 提供了一种从一个“切片(Slice)”向另一个切片复制数据的有效方法;
  • 一些用于Ipv4AddrIpv6Addr处理的便捷方法;
  • 对 CString 的若干改进;
  • 针对各种数值类型的检查、饱和和溢出操作。

Rust 1.7 的一些变化破坏了同先前版本的兼容性,在版本切换之前需要适当地考虑。不过,Rust 核心团队成员 Steve Klabnik表示,他对许多现有的库进行了大量的修复,在绝大多数情况下,这些修复都是微不足道的。还有一个细节,就是 Hacker News 用户 kibwen 分享了 Rust 团队如何评估一项变化可能带来的破坏性影响。据他介绍,他们会使用一个名为 Crater 的工具尝试编译 crates.io 上的所有包,并据此确定有多少包依赖于不可靠的行为。

最后,Rust 1.7 还包含下面一些对 Cargo 的改进:

  • 构建脚本现在可以准确描述依赖,因此,它们只在那些文件变化时才会重新执行;
  • 现在可以指定配置文件,在测试及其他场景下引入特定的依赖。

感兴趣的读者可以阅读发布说明,了解Rust 1.7 的全部变更。

查看英文原文: Rust 1.7 Brings 2x Faster Hashes and New Stable APIs

2016 年 3 月 06 日 18:001723
用户头像

发布了 1008 篇内容, 共 315.1 次阅读, 收获喜欢 284 次。

关注

评论

发布
暂无评论
发现更多内容

/(ㄒoㄒ)/~~晚了

Nydia

话题讨论 | 你是不是一个特别容易被说服的人?

石云升

话题讨论 2月春节不断更

5. Python 循环的本质就是一段代码懒得重复写

梦想橡皮擦

Python Python Monad 2月春节不断更 python入门

第四章作业

Rui

第4周作业_贷款申请用例

园子

互联网金融 小额贷款 去中心化金融借贷系统开发

LeetCode题解:297. 二叉树的序列化与反序列化,DFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

金融科技的碎片化思考(中)

曲水流觞TechRill

金融科技

流媒体传输协议之 RTP(下篇)

阿里云视频云

音视频 流媒体 rtp

区分重载和重写,轻松掌握 Java 多态

飞天小牛肉

Java 程序员 面试 后端 2月春节不断更

你真的了解 sync.Mutex吗

Leo叔叔

go mutex Go Concurrency Patterns

认识 Java 中的队列:Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList

看山

Java 线程安全

正确面对倦怠感,提升职场战斗力

boshi

职场成长 七日更

马斯克说狗币牛逼,我说idea插件助你盯盘摸鱼

滑板上的老砒霜

比特币 idea插件 Android开发

20210209—生活记录

Victor

二月春节不断更

盘点和程序员相关的那些事,让你不再被割韭菜,薅羊毛!

孙叫兽

程序员 程序人生 高薪 话题讨论

【得物技术】走进Web3D的世界(1) 画个立方体吧

得物技术

html html5 js WebGL 得物技术

Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本

JavaPub

Java hashmap 面试题 javapub

你看那个程序员,每年升职加薪,日赚3千

谙忆

从“乌鸡”到5G,不仅仅是谐音梗

脑极体

ZEGO全新语音聊天室方案,2小时复刻 Clubhouse

ZEGO即构

极客时间购买课程用例

Geek_a32093

产品经理 - 第三周作业

LLL777

【STM32】0.96寸OLED显示屏(7针SPI协议)软件模拟SPI

AXYZdong

硬件 stm32 2月春节不断更

产品经理训练营笔记 - 业务流程与产品文档(二)

.nil?

产品经理训练营

Elasticsearch 精确匹配与全文搜索

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

HTTPS的安全性从何而来?

话题讨论 | 如何获得令人心动的前端offer

魔王哪吒

程序员 面试 前端 话题讨论 二月春节不断更

深入了解gradle和maven的区别

程序那些事

maven Gradle 程序那些事 构建工具

5G点亮工业革命前,2021需要持续点亮5G

脑极体

产品训练营 - 第四周 - 作业

邹小胖

产品训练营

极客大学·产品训练营·第三章作业(第四周)

二大爷

极客大学 极客大学产品经理训练营 产品训练营

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Rust 1.7带来速度快2倍的哈希算法及新的稳定版API-InfoQ