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瀏覽量
41669 -
Shell
+關注
關注
1文章
366瀏覽量
23401 -
Rust
+關注
關注
1文章
229瀏覽量
6617
原文標題:fish-shell 進化為 Rust 項目
文章出處:【微信號:Rust語言中文社區,微信公眾號:Rust語言中文社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
shell是什么?shell實現原理分析基于MM32 MCU的shell腳本源碼
在前兩節中,我們講解了如何在MM32 MCU上使用shell來輔助開發,分別介紹的是通過串口方式和J-Link RTT方式的shell,本次課程我們分析源碼來講解shell實現原理。 軟件資源如下
發表于 12-02 15:58
?2508次閱讀
如何從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
?624次閱讀
《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語言開發的基礎軟件轉化
評論