码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 编写高性能C#代码 —— Span<T>


    Span 提供任意内存的连续区域的类型安全和内存安全表示形式。它是在堆栈而不是托管堆上分配的ref结构,是对任意内存块的抽象 。

    1.关于Span

    • 在NET Core 2.1中首次引入

    • 提供对任意内存上的连续区域的读写视图

    • 利用索引/迭代来修改范围内的内存
    • 几乎无开销

    2.和内存的关系

       Span 表示任意内存的连续区域。 Span实例通常用于保存数组的元素或数组的一部分。 但是,与数组不同, Span实例可以指向堆栈上托管的内存、本机内存或托管的内存。

    3.性能测试

      Span通常用来处理数组,所以本次测试的场景是数组的切分:从一个数组的中间元素开始,获取并返回四分之一个元素。

      3.1 数组初始化

      这里我们准备一个数组分三种不同长度进行初始化,有利于覆盖到更多的测试情况。

     

      3.2 测试采用三种方式,用BenchmarkDotNet比较一下:

      第一种(常规):

       第二种(复制):

       第三种(Span切片):

       性能测试结果如下,可以看到Span的速度是很快的,且不占内存。

     

     4. 切片

      Span.Slice()方法就是对内存进行切片,第三种方法区别于前两种,本质上不创建和销毁对象,可以认为是做到了内存0分配

    5. ReadOnlySpan

      ReadOnlySpan是Span的只读表示形式,通常用在string的切片(因为string的不可变性)。

     6. Span局限性

    1. Span是仅限存活在堆栈上的值类型

    2. Span不能是非堆栈类型的字段

    3. Span不能被装箱

    4. Span不能是异步方法的参数或局部变量

    5. Span不能被lambda表达式捕获

  • 相关阅读:
    k8s部署kafka集群
    IDEA基本配置
    Yolov5添加OTA_LOSS报错
    喜报!易基因“同源基因特异性甲基化时序数据分析方法”获专利授权
    如何从任何苹果、Windows或安卓设备访问iCloud照片
    这个中秋最潮酷玩法,必须mark!
    解决 @RefreshScope 导致定时任务注解 @Scheduled 失效
    【Hello Go】Go语言异常处理
    python爬虫动态爬取需点击事件或下一步才可获取的内容
    frp内网穿透搭建-宝塔版
  • 原文地址:https://www.cnblogs.com/YKAndXLL520/p/17814671.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号