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