【Rust日报】2023-09-19 为 aho-corasick 添加 aarch64 的 SIMD 实现

2023-09-20 23:45:31

为 aho-corasick 添加 aarch64 的 SIMD 实现

此次 PR 主要目的是为 Teddy(一个关键的数据结构) 添加 aarch64 的 SIMD 实现。之前,Teddy 使用了 x86-64 SIMD 指令,特别是 SSSE3 和 AVX2。

这个 PR 将 Teddy 的主要实现重组为一个新的 Vector trait,并为 x86-64 以及 aarch64 的向量类型提供了 Vector trait 的实现。

这实际上大大加快了在 aarch64 上(即Apple的新M1和M2芯片上)自动进行模式搜索的速度。

此外,这个 PR 还用 rebar 代替了 criterion 进行基准测试,并展示了 AhoCorasick 基准测试的前后对比。总的来说,各方面都有2-10倍的改进。对于 x86_64,可能会有一些小的延迟改进。

PR链接 aho-corasick仓库地址 https://github.com/BurntSushi/aho-corasick

Nushell + Uutils = ❤️

Nushell 团队宣布在2023年9月19日计划发布的 Nushell 0.85.0版本中,开始将 uutils/coreutils 集成到 Nushell 中。首先集成的命令是 cp,它在测试期间位于 ucp 中。因此,当您在此版本中使用 ucp 时,您实际上使用的是 coreutils 中使用的相同代码。

Nushell 团队认为,为什么我们要重新发明轮子呢? 让 Nushell 保持其特性,解析参数,提供良好的命令补全和美观的帮助和错误消息,并从顶级开发人员那里集成 crates,是一个更好的解决方式。

因此,Nushell 团队与 Uutils 团队进行了合作,讨论了他们想要做的事情,并加以实现。

通过这件事,我们可以有如下体会:

  1. 通过 Nushell 和 Uutils团队的合作,两个项目都能从中受益。这种合作为开源社区树立了一个很好的榜样。
  2. 不重新发明轮子: 作者的决策突显了开源社区的一个核心理念,即不需要重新发明已经存在的东西。通过集成已经存在的解决方案,可以更快地为用户提供价值。

nushell仓库地址 https://github.com/nushell/nushell

uutils/coreutils仓库地址

对 Rust的核心原则 “稳定性而不停滞” 的思考

Rust 的核心原则之一是:“稳定性而不停滞”。Rust 采用了“发布列车”模型,每6周发布一次新版本。这种模型使得新版本的发布变得平稳,而不是基于特性的发布。

Niko 观察到,尽管有这种发布模型,但在 Rust 中稳定一个特性仍然可能是一个压力很大的过程。博客进一步探讨了为什么会出现这种情况,以及如何调整我们的流程和习惯来解决这个问题。

Niko 在文中总结了他的主要观点:

  1. Rust 的稳定化设计是压力源,因为它们混淆了两件不同的事情:特性是否按预期工作(semver-stability)和特性是否准备好供所有预期的用例使用(recommended-for-use)。
  2. 开源工作是逐步的:为了完成我们想要的完善,我们需要用户遇到这个特性;增量里程碑帮助我们实现这一点。
  3. Nightly版本对于获取某些类型的反馈是有效的,但不是所有的;尤其是生产用户和库作者通常不会使用它。这使我们在做高风险决策时可用的数据更少,这是一个问题。
  4. 我们应该修改我们的流程,区分四个阶段:Accepted RFC、Preview、Stable 和 Recommended。

原文链接 https://smallcultfollowing.com/babysteps/blog/2023/09/18/stability-without-stressing-the-out/

-- From 日报小组 RustPlumber

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss
  • 微信公众号:Rust 语言中文社区
更多推荐

设计一个基于 GraphQL 的 Node.js 工单系统

目录表结构GraphQLSchema权限设置代码实现Query部分Mutation部分DataLoader引入查询GraphQLEdge分页实现OAuth鉴权MySQL数据库存储,Redis缓存OAuth鉴权Dataloader数据查询优化GraphQL底层接口数据引擎表结构数据库采用MySQL,核心两张表,分别是工单

抖音seo账号矩阵源码系统

1.开通多个抖音账号,并将它们归纳为一个账号矩阵系统。2.建立一个统一的账号管理平台,以便对这些账号进行集中管理,包括账号信息、内容发布、社区交互等。3.招募专业的运营团队,对每个账号进行精细化运营,包括内容制作、社区互动、数据分析等。4.建立账号矩阵系统的KPI体系,制定明确的目标和指标,对每个账号进行全面的数据分析

写一篇nginx配置指南

nginx.conf配置找到Nginx的安装目录下的nginx.conf文件,该文件负责Nginx的基础功能配置。配置文件概述Nginx的主配置文件(conf/nginx.conf)按以下结构组织:配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理、缓存、日志、虚拟主机等

关于嵌入式人工智能?

关于嵌入式人工智能?虽然学术界目前还没有嵌入式人工智能的确切定义,但随着人工智能的发展,势必会下沉到边缘、终端和嵌入式市场。嵌入式人工智能将会是未来几年AI发展的方向之一,并将伴随一系列的职位和角色涌现。最近很多小伙伴找我,说想要一些嵌入式学习资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「嵌入式入

面试算法13:二维子矩阵的数字之和

题目输入一个二维矩阵,如何计算给定左上角坐标和右下角坐标的子矩阵的数字之和?对于同一个二维矩阵,计算子矩阵的数字之和的函数可能由于输入不同的坐标而被反复调用多次。例如,输入图2.1中的二维矩阵,以及左上角坐标为(2,1)和右下角坐标为(4,3)的子矩阵,该函数输出8。分析如果不考虑时间复杂度,则采用蛮力法用两个嵌套的循

基于SSM+Vue的乐购游戏商城系统

末尾获取源码开发语言:JavaJava开发工具:JDK1.8后端框架:SSM前端:采用Vue技术开发数据库:MySQL5.7和Navicat管理工具结合服务器:Tomcat8.5开发软件:IDEA/Eclipse是否Maven项目:是目录一、项目简介二、系统设计三、系统项目截图管理员功能模块前台功能模块用户功能模块四、

Pycharm中画图警告:MatplotlibDeprecationWarning

前言:\textcolor{Green}{前言:}前言:💞这是由于在python中画图出现的问题,一般不会有错。因为它只是个警告,但是我们也可以知道解决这个问题的方法,防止后面出问题的时候知道怎么解决。前因后果问题:原因解决方法一解决方法二问题:在使用Matplotlib的show方法时,控制台出现以下警告信息:Ma

【Python】Python 包 ③ ( Python 第三方包简介 | 安装第三方包 | 命令行安装 | PyCharm 安装 | 设置代理 | 使用第三方包开发 )

文章目录一、Python第三方包简介二、安装第三方包1、使用pip命令安装第三方包2、指定第三方包安装版本3、设置代理4、PyCharm中安装第三方包三、使用第三方包开发一、Python第三方包简介Python包中包含了很多Python模块,每个Python模块对应一个Python源码,其中包含了若干功能(函数);Py

Nginx配置文件详解

一、nginx的配置文件1、常见的配置文件及其作用nginx常见配置文件位置:安装路径/conf目录中。[root@centos7nginx]#tree.├──conf│├──fastcgi.conf│├──fastcgi.conf.default│├──fastcgi_params│├──fastcgi_params

pycharm中恢复原始界面布局_常用快捷键_常用设置

文章目录1恢复默认布局1.1直接点击file→ManageIDESettings→RestoreDefaultSettings(如下图所示):1.2直接点击RestoreandRestart,然后Pycharm就会自动重启,重启之后的界面就是最原始的界面了2改变主题2.1在PyCharm的右上角,点击“齿轮,然后点击:

ThreadPoolExecutor的使用

1.在SpringBoot项目中使用ThreadPoolExecutor:SpringBoot中可以通过创建一个配置类来定义ThreadPoolExecutor,然后在需要使用的地方直接注入即可。@ConfigurationpublicclassThreadPoolConfig{@BeanpublicExecutora

热文推荐