BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Sergio De Simone 关注 14 他的粉丝 ,译者 谢丽 关注 10 他的粉丝 发布于 2016年3月7日. 估计阅读时间: 3 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT