wgpu提高多线程中性能
gfx-rs 是一个在 Rust 中实现跨平台图形处理的项目。该项目的最新进展是名为 "Arcanization" 的重大重构,目的是提高在多线程中使用 wgpu 时的性能。Arcanization 重构- Arcanization 旨在减少 wgpu 内部的锁争用,提供更好的性能。
- 该重构通过将资源移动到原子引用计数指针(Arc)后,显著降低了锁争用。
- 多线程使用 wgpu 的性能显著提高,例如在测试场景中,帧时间降低了45%。
- wgpu 内部存储所有资源的数组导致了锁争用和性能问题。
- Arcanization 将资源存储方式从直接数据更改为 Arc,显著减少了锁的持有时间。
Rust中的惯用法:构造函数与转换
这篇文章讨论了从C++过渡到Rust的经验,重点关注构造函数和类型转换, 供C++开发人员参考:-
初始化:在C++中,构造函数用于初始化实例,在Rust中通过关联函数(如
new
)实现。 -
强制不变性:构造函数有助于强制类型的不变性。在Rust中,可能失败的构造函数返回
Result
。 -
默认构造函数:在C++中,默认构造对于许多操作都很重要,在Rust中通过实现
Default
trait实现,通常使用#[derive(Default)]
进行简化。 -
复制构造函数:在C++中的复制构造函数在Rust中通过实现
Clone
trait实现,以允许显式复制。 -
可平凡复制类型:C++中的可平凡复制类型概念类似于Rust的
Copy
trait,允许进行字节对字节的复制。 - 移动构造函数:Rust的移动语义消除了C++中移动构造函数的需求。
-
类型转换:C++中的转换构造函数在Rust中通过实现
From
和Into
trait实现,强调了显式性,而可能失败的转换使用TryFrom
和TryInto
trait。
ripgrep: 14.0.0版本发布
ripgrep 是一款面向行的搜索工具,可以递归地在当前目录中搜索正则表达式模式。默认情况下,ripgrep 将遵循 gitignore 规则并自动跳过隐藏文件/目录和二进制文件。ripgrep 在 Windows、macOS 和 Linux 上都有一流的支持,并为每个版本提供了二进制下载。 目前版本 14.0.0 的 发布了,包含了一些新功能、性能改进和大量的 bug 修复。 原文链接https://github.com/BurntSushi/ripgrep/releases/tag/14.0.0ts_quote: 从 Rust 中生成 typescript 代码
这个 crate 提供了一些准引用宏,用于从 Rust 内部生成 TypeScript 代码.这让在 Rust 中编写一些 typescript 的代码生成有了个多的选择.下面是一些例子:
let ts: String = ts_string! { const foo: number = 42; } // 生成的 typescript代码是: "const foo: number = 42;" let name = "foo"; let value: u32 = 7; let ts: String = ts_string! { const #name: number = #{value + 1}; } // 生成的 typescript代码是: "const foo: number = 8;" github地址https://github.com/spencerkohan/type_reflect/tree/main/ts_quote
fish-shell 进化为 Rust 项目
fish-shell 是一个用户友好的命令行 Shell. 原本是用C++编写, 在两年前开始使用 Rust 进行迁移, 目前, 整体仓库的 Rust 代码占比为 53%, 已经成功进化为 Rust 项目. github 地址https://github.com/fish-shell/fish-shell -- From 日报小组 BobQ, FBI小白 社区学习交流平台订阅:- Rustcc论坛: 支持rss
- 微信公众号:Rust语言中文社区
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
二进制
+关注
关注
2文章
795浏览量
41652 -
Shell
+关注
关注
1文章
365浏览量
23372 -
Rust
+关注
关注
1文章
228浏览量
6607
原文标题:fish-shell 进化为 Rust 项目
文章出处:【微信号:Rust语言中文社区,微信公众号:Rust语言中文社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
shell是什么?shell实现原理分析基于MM32 MCU的shell脚本源码
在前两节中,我们讲解了如何在MM32 MCU上使用shell来辅助开发,分别介绍的是通过串口方式和J-Link RTT方式的shell,本次课程我们分析源码来讲解shell实现原理。 软件资源如下
发表于 12-02 15:58
•2502次阅读
如何从shell/命令行打包项目?
我有一个shell脚本(OSX.command shell缺省bash脚本),可以通过做一些类似的操作来清理和构建项目,我也希望能够从shell脚本中打包
发表于 10-24 12:24
只会用Python?教你在树莓派上开始使用Rust
结合起来,并在Raspberry Pi上安装Rust。设置Raspberry Pi对于此项目,您将需要:Raspberry PiLED。220-1k欧姆电阻。面包板和接线。使用GPIO 18连接到LED
发表于 05-20 08:00
怎样去使用Rust进行嵌入式编程呢
使用Rust进行嵌入式编程Use Rust for embedded development篇首语:Rust的高性能、可靠性和生产力使其适合于嵌入式系统。在过去的几年里,Rust在程序
发表于 12-22 07:20
如何利用C语言去调用rust静态库呢
持续。rust整个结构还不是特别清晰,特别是库和wrapper相关的同个C项目,包含多个rust的静态库,静态库中也会有符号冲突这点应该可以把多个rust程序打包一个库来解决。能否准确
发表于 06-21 10:27
如何在STM32 (Cortex M3)和GD32(RISC-V)上用Rust开发
Preface最近 Mozilla 的 Rust 和 Google 的 Golang 两门新语言非常受关注。不过 Golang 除了 Docker 这个标志性的项目,在服务端配合 gRPC 也已经
发表于 06-21 10:38
在Rust代码中加载静态库时,出现错误 ` rust-lld: error: undefined symbol: malloc `怎么解决?
“ [i]malloc ”、“ [i]exit ”。我验证了使用 ` [i]nm ` 命令。
问题是我打算使用 ffi 在 rust 中使用这个静态库。当我尝试在我的 Rust 代码中加载静态库
发表于 06-09 08:44
Centrifugal fish autofeeder
Centrifugal fish autofeeder
This easy as well as cheap but effective device is mainly intended for your ease to leave your fish autofed
发表于 03-28 22:31
•621次阅读
《Rust Web Development》提供了完整的 Rust Web 开发指南
个 web 项目(并将其带入生产),并提供了框架无关的深入探讨。 "Rust Web Development"(Manning出版社)一书已经发布并可以购买。各位!在经过了两年多的编辑和重新编辑后
Google在Chromium项目中支持使用Rust
Rust 1.66.1 发布 Rust 1.66.1 修复了 Cargo 在使用 SSH 克隆依赖项或注册表索引时不验证 SSH 主机密钥的问题。此安全漏洞被跟踪为 CVE-2022-46176[1
如何在Rust项目中使用InfluxDB 2.x
了更好的性能和更好的用户体验。Rust语言提供了InfluxDB 2.x的官方客户端库,可以方便地在Rust项目中使用InfluxDB 2.x。 本教程将介绍如何在Rust
Fish Shell采用Rust重写会导致性能下降
fish 是适用于 Linux、macOS 的命令行 Shell,其名字取于 "the friendly interactive shell" 的简称,最大特点就是方便易用、功能强大、智能并且用户友好。很多其他
一次Rust重写基础软件的实践
受到2022年“谷歌使用Rust重写Android系统且所有Rust代码的内存安全漏洞为零” [1] 的启发,最近笔者怀着浓厚的兴趣也顺应Rust 的潮流,尝试着将一款C语言开发的基础软件转化
评论