簡體   English   中英

F#是否與C#的“不安全”塊具有相同的語法

[英]Does F# have equivalent syntax to C#'s “unsafe” block

大量的陣列邊界檢查會降低速度,對於2D陣列尤其如此。 有沒有辦法在F#中編寫不安全的代碼塊?

我不是F#程序員,但據我所知它似乎沒有不安全的關鍵字。

通過將2D陣列轉換為一維陣列,可以提高性能。

建議5:在我們做到這一點之前,我建議.NET用戶做許多C ++數值程序員所做的事情:編寫一個類來實現你的n維數組。 這將表示為一維數組,並且相關的訪問器將通過適當的乘法將n個索引轉換為1。 我們幾乎肯定不會消除1-d數組的邊界檢查,但至少我們只做一次檢查!

數組邊界檢查CLR中的消除

請參閱此處了解一些讓編譯器為您刪除邊界檢查的方法。 基本上,您需要以編譯器知道您的索引將在邊界內的方式編寫循環。 如果它知道它將在邊界內,那么當你在沒有調試的情況下在發布模式下運行時,JIT編譯器將為你刪除邊界檢查。

我沒有用它來知道它是否適用,但是檢查NativePtr模塊

不是在這個版本,我懷疑他們會永遠添加它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM