最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中Span相關的性能優(yōu)化建議

 更新時間:2021年08月04日 10:02:59   作者:飯熟了  
Span 是C#7.2引入的一種新類型,在.NET Core 2.1運行時中受支持,Span 提供對內存連續(xù)區(qū)域的類型安全訪問,這篇文章主要給大家介紹了關于C#中Span相關的一些性能優(yōu)化建議,需要的朋友可以參考下

引言

C# 是一門現(xiàn)代化的編程語言,與Java十分的相似。熟練的開發(fā)者甚至能三天無縫切換到Java。生態(tài)性能也是遍地開花。今天, 讓我們來學習一下C#中的Span相關的性能優(yōu)化吧

什么是Span

System.Span 是在 .NET 中發(fā)揮關鍵作用的新值類型。使用它,可以表示任意內存的相鄰區(qū)域,無論相應內存是與托管對象相關聯(lián),還是通過互操作由本機代碼提供,亦或是位于堆棧上。除了具有上述用途外,它仍能確保安全訪問和高性能特性,就像數組一樣。

讀過官網的一段描述,可知:Span是一個值類型。他的價值在于可以讓我們將任何類型存放于相鄰區(qū)域。這包括:

  • 非托管內存
  • 堆棧
  • 托管內存

關于String的一段性能提升

有些網站呀,做完活動后,通常會公布中獎名單(doge)。現(xiàn)在的需求是,我們要將用戶名的中間幾個字打碼,例如:林深鹿 ,我們要將其寫為林*鹿 來保護用戶隱私 。

來看一段代碼:

我們將 “程序媛小莊” 作為參數,拼接了一下字符串,來看下輸出結果:

非常的nice,非常的easy

接下來,我們來使用Span實現(xiàn):

static void Main(string[] args)
{
    Console.WriteLine(ObfuscatePhoneSpan("程序媛小莊"));
}

static string ObfuscatePhoneSpan(string id)
{
    return string.Create(id.Length, id, (sc, value) =>
    {
        int n = id.Length / 2;
        int r = id.Length - (id.Length * 20 / 100) - n; //需替換的個數 = (總長) - (20%) - (一半)

        value.AsSpan().CopyTo(sc);
        sc.Slice(n, r).Fill('*');
    });
}

value 變量是個字符串,它提供了AsSpan方法,讓我們得到了Span的實例,最終通過Slice方法從n截取r個字符,并填充為 *

測試代碼

最終性能對比

寫在最后

上述代碼Span無論是在內存占用還是平均時間上都超過了string 原生的API

Span 提供的一系列API,讓我們能夠在C#上使用本機代碼,給我們以更強的性能。

到此這篇關于C#中Span相關性能優(yōu)化建議的文章就介紹到這了,更多相關c# Span性能優(yōu)化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#控制臺實現(xiàn)飛行棋游戲

    C#控制臺實現(xiàn)飛行棋游戲

    這篇文章主要為大家詳細介紹了C#控制臺實現(xiàn)飛行棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 詳解C#使用AD(Active Directory)驗證內網用戶名密碼

    詳解C#使用AD(Active Directory)驗證內網用戶名密碼

    這篇文章主要介紹了詳解C#使用AD(Active Directory)驗證內網用戶名密碼的相關資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • 詳解C#實例化對象的三種方式及性能對比

    詳解C#實例化對象的三種方式及性能對比

    這篇文章主要介紹了C#實例化對象的三種方式及性能對比,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C#知識整理

    C#知識整理

    本文主要介紹了C#的相關知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • C#中OpenCVSharp實現(xiàn)輪廓檢測

    C#中OpenCVSharp實現(xiàn)輪廓檢測

    這篇文章主要介紹了C#中OpenCVSharp實現(xiàn)輪廓檢測,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • ASP.NET總結C#中7種獲取當前路徑的方法

    ASP.NET總結C#中7種獲取當前路徑的方法

    本文主要介紹了7種獲取當前路徑的方法,并做了代碼演示,分享給大家,感興趣的朋友可以參考一下。
    2016-03-03
  • C#表達式樹Expression動態(tài)創(chuàng)建表達式

    C#表達式樹Expression動態(tài)創(chuàng)建表達式

    這篇文章介紹了C#表達式樹Expression動態(tài)創(chuàng)建表達式的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • C#結合JS實現(xiàn)HtmlTable動態(tài)添加行并保存到數據庫的流程步驟

    C#結合JS實現(xiàn)HtmlTable動態(tài)添加行并保存到數據庫的流程步驟

    在 Web 應用項目中,實現(xiàn)一對多錄入的數據管理功能是一項常見的應用,因此可以實現(xiàn)一個相對輕量化的設計實現(xiàn)表格的錄入,為保證功能的可用性、界面友好性,本文給大家介紹了C#結合JS實現(xiàn)HtmlTable動態(tài)添加行并保存到數據庫,需要的朋友可以參考下
    2024-12-12
  • C#中datatable去重的方法

    C#中datatable去重的方法

    這篇文章主要介紹了C#中datatable去重的方法,通過兩種不同的方法對比分析了datatable去重的技巧,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • C# 微信支付 wx.chooseWXPay 簽名錯誤的解決方法

    C# 微信支付 wx.chooseWXPay 簽名錯誤的解決方法

    本篇文章主要介紹了C# 微信支付 wx.chooseWXPay 簽名錯誤的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論

安陆市| 磐安县| 定边县| 嫩江县| 砀山县| 高尔夫| 北辰区| 托里县| 泾源县| 洛川县| 西平县| 盐津县| 禹城市| 泸州市| 二连浩特市| 海城市| 遂川县| 精河县| 文安县| 公主岭市| 庆城县| 乌兰浩特市| 镇江市| 天柱县| 交口县| 景谷| 泊头市| 兰州市| 繁峙县| 宜兰县| 金平| 二手房| 皋兰县| 雷州市| 淄博市| 延津县| 广宗县| 华容县| 张家川| 新余市| 龙胜|