关于 ReadOnlySpan<T>
using System;
using System.Linq; namespace BenchmarkAndSpanExample
{
public class NameParser
{
public string GetLastName(string fullName)
{
var names = fullName.Split(" "); var lastName = names.LastOrDefault(); return lastName ?? string.Empty;
} public string GetLastNameUsingSubstring(string fullName)
{
var lastSpaceIndex = fullName.LastIndexOf(" ", StringComparison.Ordinal); return lastSpaceIndex == -
? string.Empty
: fullName.Substring(lastSpaceIndex + );
} public ReadOnlySpan<char> GetLastNameWithSpan(ReadOnlySpan<char> fullName)
{
var lastSpaceIndex = fullName.LastIndexOf(' ');
return lastSpaceIndex == -
? ReadOnlySpan<char>.Empty
: fullName.Slice(lastSpaceIndex + );
}
}
}
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Order; namespace BenchmarkAndSpanExample
{
[RankColumn]
[Orderer(SummaryOrderPolicy.FastestToSlowest)]
[MemoryDiagnoser]
public class NameParserBenchmarks
{
private const string FullName = "Steve J Gordon";
private static readonly NameParser Parser = new NameParser(); [Benchmark(Baseline = true)]
public void GetLastName()
{
Parser.GetLastName(FullName);
} [Benchmark]
public void GetLastNameUsingSubstring()
{
Parser.GetLastNameUsingSubstring(FullName);
} [Benchmark]
public void GetLastNameWithSpan()
{
Parser.GetLastNameWithSpan(FullName);
}
}
}
public class Program
{
public static void Main(string[] args)
{
var summary = BenchmarkRunner.Run<NameParserBenchmarks>();
}
}
关于 ReadOnlySpan<T>的更多相关文章
- .Net Core中使用ref和Span<T>提高程序性能
		
一.前言 其实说到ref,很多同学对它已经有所了解,ref是C# 7.0的一个语言特性,它为开发人员提供了返回本地变量引用和值引用的机制. Span也是建立在ref语法基础上的一个复杂的数据类型,在文 ...
 - C#的发展历程第五 - C# 7开始进入快速迭代道路
		
C# 7开始,C#加快了迭代速度,多方面的打磨让C#在易用性,效率等各方面都向完美靠近.另外得益于开源,社区对C#的进步也做了很大共享.下面带领大家看看C# 7的新特性.其中一部分是博主已经使用过,没 ...
 - C# - Span 全面介绍:探索 .NET 新增的重要组成部分
		
假设要公开特殊化排序例程,以就地对内存数据执行操作.可能要公开需要使用数组的方法,并提供对相应 T[] 执行操作的实现.如果方法的调用方有数组,且希望对整个数组进行排序,这样做就非常合适.但如果调用方 ...
 - Span<T>
		
Introduction Span<T> is a new type we are adding to the platform to represent contiguous regio ...
 - C#7.2——编写安全高效的C#代码  c# 中模拟一个模式匹配及匹配值抽取  走进 LINQ 的世界  移除Excel工作表密码保护小工具含C#源代码  腾讯QQ会员中心g_tk32算法【C#版】
		
C#7.2——编写安全高效的C#代码 2018-11-07 18:59 by 沉睡的木木夕, 123 阅读, 0 评论, 收藏, 编辑 原文地址:https://docs.microsoft.com/ ...
 - KMP algorithm challenge string.Contains
		
KMP: public int KMP (ReadOnlySpan<char> content, ReadOnlySpan<char> span) { _next = new ...
 - 实际体验Span<T> 的惊人表现
		
前言 最近做了一个过滤代码块功能的接口.就是获取一些博客文章做文本处理,然后这些博客文章的代码块太多了,很多重复的代码关键词如果被拿过来处理,那么会对文本的特征表示已经特征选择会有很大的影响.所以需要 ...
 - .NET Core 的 Span<T> 学习与使用笔记
		
一.阅读材料 All About Span: Exploring a New .NET Mainstay Span<T> - byte to int conversions Span< ...
 - C#7.2——编写安全高效的C#代码
		
原文地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/write-safe-efficient-code?view=netcore-2.1 值类型的优 ...
 
随机推荐
- redis设置、查看和校验密码
			
Redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式(密码),可以通过编辑[redis.conf]配置文件来启用认证,这里简单介绍一下Redis中如何设置.查看和校验密码(登录验证和操 ...
 - Java开发桌面程序学习(12)——Javafx 悬浮窗提示 tooptip
			
Javafx 悬浮窗提示 tooptip 鼠标悬浮在某个控件,弹出提示,效果如下: 代码: //control是某个控件 Tooltip.install(control, new Tooltip(&q ...
 - git基本操作:分支管理
			
一.创建测试项目 1.新建GitHub仓库 在GitHub上面新创建一个仓库,用来演示分支管理,如下图所示: 点击“Create repository”按钮创建新仓库. 2.将本地仓库项目上传到Git ...
 - 交互式shell脚本web console
			
官网:http://web-console.org/ 这个脚本可以实现web下交互,也就是有了这玩意后可以不用反弹shell了. <?php // Web Console v0.9.7 (201 ...
 - [转]Outlook VBA自动处理邮件
			
本文转自:https://blog.csdn.net/hnwyllmm/article/details/44874331 需求描述公司里面每天都会有很多邮件,三分之一都是不需要看的,Outlook的过 ...
 - 一文解读PV/UV/VV/IP (转)
			
什么是PV? PV即Page View,网站浏览量,指页面浏览的次数,用以衡量网站用户访问的网页数量.用户每次打开一个页面便记录1次PV,多次打开同一页面则浏览量累计.一般来说,PV与来访者的数量成正 ...
 - LeetCode——Delete Duplicate Emails(巧用mysql临时表)
			
Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique ...
 - PHP代码篇(四)--将字符串按指定字符切割
			
说,我有一个中间接手的需求,什么叫中间接手呢,就是这个功能已经上线了,并且已经产生数据了,现在要对这个功能进行修改,所以既要满足当下开发的需求,又要兼容以前的功能.简单说来,就是我们有一个后台添加商品 ...
 - RdKafka文档翻译
			
函数string rd_kafka_err2str ( integer $err ) 将rdkafka错误代码转换为字符串 integer rd_kafka_errno2err ( integer $ ...
 - C学习笔记(3)---作用域,数组, (少量指针入门)
			
1. 作用域(scope):任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问.C 语言中有三个地方可以声明变量. a. 在函数或块内部的局部变量 - 在某个函数或块的内 ...