编译器优化后代码能够被相信吗
这篇文章大致上是标题相关的内容,但首先,让我简单介绍一下关于 SIMD 的故事。对于SIMD的工作原理,可以分为三个层次的理解(至少我目前处于第三层):
- 编译器很聪明!它们会自动向量化所有的代码!
- 编译器很笨,自动向量化很脆弱,很容易因为代码的无关变动而破坏它。手动编写明确的SIMD指令总是更好的选择。
- 手动编写SIMD真的很难 - 你需要为每个不同的CPU架构重新做一遍工作。而且,部分标量代码编译器比你写的汇编代码更好。在SIMD方面很难通过手写来击败编译器呢,因为很多奇特的指令和限制。编译器只是工具,如果代码以适合矢量化的形式编写,它们可以可靠地将代码向量化。
最近我从第二层级升级到了第三层级,这让我意识到编译器在优化过程中使用的模型在我的脑海中一下子明了起来。在这篇文章中,我想解释一下关于静态语言(如Rust或C++)编译器优化的一般框架。之后,我将运用这个框架来讲解自动向量化。
ReadMore: https://matklad.github.io/2023/04/09/can-you-trust-a-compiler-to-optimize-your-code.html
Ubiquity v0.4.0 更新
Ubiquity是一个用 Rust 编写的免费开源的 Markdown 编辑器。它使用了 Yew、Tauri、Tailwind 和 DaisyUI。
这是一次重大更新,带来了令人兴奋的新功能和改进。
新功能:
- Markdown表格生成器 - 由Luka Kerr的mdtg提供。
- PDF导出 - 您现在可以将Ubiquity的精美HTML预览导出为PDF。只需点击标题栏中的保存图标,然后从下拉菜单中选择 Export as PDF 。这将打开您浏览器的打印对话框,您可以选择将文件保存为 .pdf 或打印出来。
- 错误提示 - 如果应用程序发生错误,Ubiquity现在会为您提供错误提示。
改进:
- 为桌面用户界面的文本编辑器标题栏添加了分隔符;改进了标题栏对屏幕尺寸的处理。
- 在主应用程序标题中添加了工具提示。
- 将编辑器字体大小和预览字体大小的图标更改为更易于理解的放大镜图标。
ReadMore: https://ubiquity.rs
统计报告:超过80%的仓库发布在公共VCS上
为了方便对开源项目做出贡献,第一步是找到它的公共版本控制系统(Version Control System,VCS),而现在通常都在 GitHub 上。特别是 Rust 的 crate 应当在其元数据中包含一个指向其 VCS 的链接。
我在 2023 年 6 月 17 日 11:08:42 +0300 开始编写 Rust Digger,距今已经一个多月了。由于刚开始学 Rust,一开始进展非常缓慢,但几周后开始有了一些形式。我甚至找到了一些 crate,它们链接到了 http://github.com(而不是 https),或者链接到了 www.github.com 而不是 github.com。这些都不是大问题,但我提交了一些 Pull Request 来修复这些问题,我认为大多数 PR 都被接受了。
这是基于 Rust Digger 收集的数据的第一个报告。下面是统计页面的副本。一些亮点:我们找到了 120,484 个 crates。其中近 80% 的 crates 都有一个指向其代码库(公共版本控制系统)的链接。另外 3% 在主页字段中有一个值,很多情况下那实际上是指向其代码库的链接。17.17% 的 crates 既没有代码库链接,也没有主页链接。还有 313 个 crates(总数的 0.26%)使用了一个 http 链接来连接它们的 git repo。这不是个大问题,毕竟 VCS 主机很可能会重定向到 https 版本,但使用 https 链接更为正确。
你可能会问,80% 是高还是低。我在 PyDigger 上的统计数据显示,只有 63.49% 的 Python 包有指向其 VCS 的链接,而这只涵盖了最近上传的 115,321 个包。对于较旧的包来说,这个比例可能更低。因此,80% 比 Python 的比例要好得多,但仍意味着对于 17-20% 的 crates,我们没有非常简单的方式来找到它们的代码库。
几乎 75% 的 crates 都使用 GitHub 作为它们的代码库,其余的 5% 分布在其他服务上。GitLab 占 2.68%。还有 1,821 个 crates(占所有 crates 的 1.51%)我们还没有对其代码库进行分类,这需要进行一些手动工作。其中一些 crate 使用了链接到 github.com 的 http 链接。
ReadMore: https://rust-digger.code-maven.com/news/first-report
From 日报小组 Koalr
社区学习交流平台订阅:
评论区
写评论还没有评论