wgpu提高多線程中性能
gfx-rs 是一個在 Rust 中實現(xiàn)跨平臺圖形處理的項目。該項目的最新進展是名為 "Arcanization" 的重大重構(gòu),目的是提高在多線程中使用 wgpu 時的性能。Arcanization 重構(gòu)- Arcanization 旨在減少 wgpu 內(nèi)部的鎖爭用,提供更好的性能。
- 該重構(gòu)通過將資源移動到原子引用計數(shù)指針(Arc)后,顯著降低了鎖爭用。
- 多線程使用 wgpu 的性能顯著提高,例如在測試場景中,幀時間降低了45%。
- wgpu 內(nèi)部存儲所有資源的數(shù)組導(dǎo)致了鎖爭用和性能問題。
- Arcanization 將資源存儲方式從直接數(shù)據(jù)更改為 Arc,顯著減少了鎖的持有時間。
Rust中的慣用法:構(gòu)造函數(shù)與轉(zhuǎn)換
這篇文章討論了從C++過渡到Rust的經(jīng)驗,重點關(guān)注構(gòu)造函數(shù)和類型轉(zhuǎn)換, 供C++開發(fā)人員參考:-
初始化:在C++中,構(gòu)造函數(shù)用于初始化實例,在Rust中通過關(guān)聯(lián)函數(shù)(如
new
)實現(xiàn)。 -
強制不變性:構(gòu)造函數(shù)有助于強制類型的不變性。在Rust中,可能失敗的構(gòu)造函數(shù)返回
Result
。 -
默認構(gòu)造函數(shù):在C++中,默認構(gòu)造對于許多操作都很重要,在Rust中通過實現(xiàn)
Default
trait實現(xiàn),通常使用#[derive(Default)]
進行簡化。 -
復(fù)制構(gòu)造函數(shù):在C++中的復(fù)制構(gòu)造函數(shù)在Rust中通過實現(xiàn)
Clone
trait實現(xiàn),以允許顯式復(fù)制。 -
可平凡復(fù)制類型:C++中的可平凡復(fù)制類型概念類似于Rust的
Copy
trait,允許進行字節(jié)對字節(jié)的復(fù)制。 - 移動構(gòu)造函數(shù):Rust的移動語義消除了C++中移動構(gòu)造函數(shù)的需求。
-
類型轉(zhuǎn)換:C++中的轉(zhuǎn)換構(gòu)造函數(shù)在Rust中通過實現(xiàn)
From
和Into
trait實現(xiàn),強調(diào)了顯式性,而可能失敗的轉(zhuǎn)換使用TryFrom
和TryInto
trait。
ripgrep: 14.0.0版本發(fā)布
ripgrep 是一款面向行的搜索工具,可以遞歸地在當(dāng)前目錄中搜索正則表達式模式。默認情況下,ripgrep 將遵循 gitignore 規(guī)則并自動跳過隱藏文件/目錄和二進制文件。ripgrep 在 Windows、macOS 和 Linux 上都有一流的支持,并為每個版本提供了二進制下載。 目前版本 14.0.0 的 發(fā)布了,包含了一些新功能、性能改進和大量的 bug 修復(fù)。 原文鏈接https://github.com/BurntSushi/ripgrep/releases/tag/14.0.0ts_quote: 從 Rust 中生成 typescript 代碼
這個 crate 提供了一些準(zhǔn)引用宏,用于從 Rust 內(nèi)部生成 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%, 已經(jīng)成功進化為 Rust 項目. github 地址https://github.com/fish-shell/fish-shell -- From 日報小組 BobQ, FBI小白 社區(qū)學(xué)習(xí)交流平臺訂閱:- Rustcc論壇: 支持rss
- 微信公眾號:Rust語言中文社區(qū)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
二進制
+關(guān)注
關(guān)注
2文章
796瀏覽量
41740 -
Shell
+關(guān)注
關(guān)注
1文章
366瀏覽量
23437 -
Rust
+關(guān)注
關(guān)注
1文章
230瀏覽量
6644
原文標(biāo)題:fish-shell 進化為 Rust 項目
文章出處:【微信號:Rust語言中文社區(qū),微信公眾號:Rust語言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
shell是什么?shell實現(xiàn)原理分析基于MM32 MCU的shell腳本源碼
在前兩節(jié)中,我們講解了如何在MM32 MCU上使用shell來輔助開發(fā),分別介紹的是通過串口方式和J-Link RTT方式的shell,本次課程我們分析源碼來講解shell實現(xiàn)原理。 軟件資源如下
發(fā)表于 12-02 15:58
?2527次閱讀
如何從shell/命令行打包項目?
我有一個shell腳本(OSX.command shell缺省bash腳本),可以通過做一些類似的操作來清理和構(gòu)建項目,我也希望能夠從shell腳本中打包
發(fā)表于 10-24 12:24
只會用Python?教你在樹莓派上開始使用Rust
結(jié)合起來,并在Raspberry Pi上安裝Rust。設(shè)置Raspberry Pi對于此項目,您將需要:Raspberry PiLED。220-1k歐姆電阻。面包板和接線。使用GPIO 18連接到LED
發(fā)表于 05-20 08:00
怎樣去使用Rust進行嵌入式編程呢
使用Rust進行嵌入式編程Use Rust for embedded development篇首語:Rust的高性能、可靠性和生產(chǎn)力使其適合于嵌入式系統(tǒng)。在過去的幾年里,Rust在程序
發(fā)表于 12-22 07:20
如何利用C語言去調(diào)用rust靜態(tài)庫呢
持續(xù)。rust整個結(jié)構(gòu)還不是特別清晰,特別是庫和wrapper相關(guān)的同個C項目,包含多個rust的靜態(tài)庫,靜態(tài)庫中也會有符號沖突這點應(yīng)該可以把多個rust程序打包一個庫來解決。能否準(zhǔn)確
發(fā)表于 06-21 10:27
如何在STM32 (Cortex M3)和GD32(RISC-V)上用Rust開發(fā)
Preface最近 Mozilla 的 Rust 和 Google 的 Golang 兩門新語言非常受關(guān)注。不過 Golang 除了 Docker 這個標(biāo)志性的項目,在服務(wù)端配合 gRPC 也已經(jīng)
發(fā)表于 06-21 10:38
在Rust代碼中加載靜態(tài)庫時,出現(xiàn)錯誤 ` rust-lld: error: undefined symbol: malloc `怎么解決?
“ [i]malloc ”、“ [i]exit ”。我驗證了使用 ` [i]nm ` 命令。
問題是我打算使用 ffi 在 rust 中使用這個靜態(tài)庫。當(dāng)我嘗試在我的 Rust 代碼中加載靜態(tài)庫
發(fā)表于 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
發(fā)表于 03-28 22:31
?628次閱讀

《Rust Web Development》提供了完整的 Rust Web 開發(fā)指南
個 web 項目(并將其帶入生產(chǎn)),并提供了框架無關(guān)的深入探討。 "Rust Web Development"(Manning出版社)一書已經(jīng)發(fā)布并可以購買。各位!在經(jīng)過了兩年多的編輯和重新編輯后
Google在Chromium項目中支持使用Rust
Rust 1.66.1 發(fā)布 Rust 1.66.1 修復(fù)了 Cargo 在使用 SSH 克隆依賴項或注冊表索引時不驗證 SSH 主機密鑰的問題。此安全漏洞被跟蹤為?CVE-2022-46176[1
Rust的內(nèi)部工作原理
Rust到匯編:了解 Rust 的內(nèi)部工作原理 非常好的Rust系列文章,通過生成的匯編代碼,讓你了解很多Rust內(nèi)部的工作機制。例如文章有 Rus

如何在Rust項目中使用InfluxDB 2.x
了更好的性能和更好的用戶體驗。Rust語言提供了InfluxDB 2.x的官方客戶端庫,可以方便地在Rust項目中使用InfluxDB 2.x。 本教程將介紹如何在Rust
Fish Shell采用Rust重寫會導(dǎo)致性能下降
fish 是適用于 Linux、macOS 的命令行 Shell,其名字取于 "the friendly interactive shell" 的簡稱,最大特點就是方便易用、功能強大、智能并且用戶友好。很多其他

一次Rust重寫基礎(chǔ)軟件的實踐
受到2022年“谷歌使用Rust重寫Android系統(tǒng)且所有Rust代碼的內(nèi)存安全漏洞為零” [1] 的啟發(fā),最近筆者懷著濃厚的興趣也順應(yīng)Rust 的潮流,嘗試著將一款C語言開發(fā)的基礎(chǔ)軟件轉(zhuǎn)化
評論