首页 > 其他分享 >在 .NET 8 中搜索值的最佳新方法

在 .NET 8 中搜索值的最佳新方法

时间:2024-08-25 22:14:39浏览次数:7  
标签:return SearchValues Base64CharsArr Benchmark 最佳 ExampleText 搜索 NET public

https://www.bilibili.com/list/watchlater?oid=918750121

using System.Buffers;
using BenchmarkDotNet.Attributes;

namespace SearchValuesExample;

[MemoryDiagnoser(false)]
public class Benchmarks
{
    private const string Base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

    private static readonly char[] Base64CharsArr =
    [
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
        'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
        'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', '='
    ];

    private static readonly SearchValues<char> Base64SearchVal = SearchValues.Create(Base64Chars);

    [Params("dQw4w9WgXcQ","6iFbuI^pe68k", "dQw4w9WgXcQdQw4w9WgXcQdQw4w9WgXcQdQw4w9WgXcQdQw4w9WgXcQ")]
    public string ExampleText { get; set; }
    
    [Benchmark]
    public bool IsBase64_SearchValues()
    {
        return ExampleText.AsSpan().IndexOfAnyExcept(Base64SearchVal) == -1;
    }
    
    [Benchmark]
    public bool IsBase64_CharArray()
    {
        return ExampleText.AsSpan().IndexOfAnyExcept(Base64CharsArr) == -1;
    }
    
    [Benchmark]
    public bool IsBase64_Naive()
    {
        for (var i = 0; i < ExampleText.Length; i++)
        {
            var chr = ExampleText[i];
            if (!Base64CharsArr.Contains(chr))
            {
                return false;
            }
        }

        return true;
    }
}

标签:return,SearchValues,Base64CharsArr,Benchmark,最佳,ExampleText,搜索,NET,public
From: https://www.cnblogs.com/chasingdreams2017/p/18379634

相关文章

  • 【pytorch深度学习——小样本学习策略】网格搜索和遗传算法混合优化支持向量机的小样
    最近需要根据心率血氧数据来预测疲劳度,但是由于心率血氧开源数据量较少,所以在训练模型时面临着样本数量小的问题,需要对疲劳程度进行多分类,属于小样本,高维度问题。在有限样本的条件之下,必须要需要选择合适的深度学习算法同时满足模型的泛化能力和学习精度。其次,由于小样本学习的......
  • controlnet inpainting
    Brushnet:aplug-and-playimageinpaintingmodelwithdecomposeddual-branchdiffusion_brushnet:aplug-and-playimageinpaintingmodelw-CSDN博客文章浏览阅读671次,点赞29次,收藏18次。本文介绍了一种名为Brushnet的图像修复模型,该模型通过分离的双分支扩散来提升图像......
  • 06--kubernetes.pod管理与投射数据卷
    前言:上一章记录了部署k8s常用的两个方式,这一章就简单一些,整理一下k8s资源对象的配置和管理命令。1、集群状态检查前天搭建的环境,然后关机了两天今天开启后第一时间需要检查集群环境是否正常[root@k8s-master1~]#kubectlgetnodeNAMESTATUSROLESAGE......
  • Kubernetes 与 dockershim
    dockershim是什么?https://v1-27.docs.kubernetes.io/zh-cn/blog/2022/05/03/dockershim-historical-context/在Kubernetes的早期,只支持一个ContainerruntimesDockerEngine,当时并没有太多其他选择,而Docker是使用容器的主要工具,所以这不是一个有争议的选择。之后kuberne......
  • Kubernetes前提条件准备
    环境条件升级内核修改内核参数配置cgroup安装CRI内核参数配置网络流量转发cat<<EOF|sudotee/etc/modules-load.d/k8s.confoverlaybr_netfilterEOF 启用模块modprobeoverlaymodprobebr_netfilter 调整内核参数net.ipv4.ip_forward......
  • Kubernetes大规模集群
    Kubernetes资源限制Kubernetes单个集群支持的最大节点数为5,000。Kubernetes标准的配置:每个节点的Pod数量不超过110节点数不超过5,000Pod总数不超过150,000容器总数不超过300,000你可以通过添加或删除节点来扩展集群。集群扩缩的方式取决于集群的部署方式以下集......
  • Kubernetes 从0到1
    Kubernetes建设考虑点部署一套Kubernetes集群需要考虑多个方面,包括应用层面、中间件、数据库、流量入口等。以下是一些关键方面:基础设施:选择适当的云提供商或物理硬件来部署Kubernetes集群。确保网络和存储资源的可用性和性能。考虑集群的地理位置和可用性区域。以上综合......
  • Kubernetes v1.28.2 & Calico eBPF
    集群初始化简略步骤初始化集群kubeadminit\--skip-phases=addon/kube-proxy\--apiserver-cert-extra-sans=35.229.220.159,127.0.0.1,10.0.0.3,10.0.0.4,10.0.0.5,10.254.0.2\--control-plane-endpoint=apiserver.unlimit.club\--apiserver-advertis......
  • Neo-GNNs: Neighborhood Overlap-aware Graph Neural Networks for Link Prediction
    目录概符号说明MotivationNeo-GNN代码Neo-GNNs:Neighborhoodoverlap-awaregraphneuralnetworksforlinkprediction.NeurIPS,2021.概一种计算上相对高效的,同时利用结构信息和特征信息的链接预测模型.符号说明\(\mathcal{G}=(\mathcal{V},\mathcal{E})\),gra......
  • 在C#中应用命令模式:设计和实现的最佳实践
    在C#中应用命令模式:设计和实现的最佳实践引言在软件设计中,设计模式是解决常见问题的通用解决方案。命令模式(CommandPattern)是行为型设计模式之一,它将请求或操作封装为对象,从而使得你可以用不同的请求对客户端进行参数化,队列请求或记录请求日志,以及支持可撤销的操作。在C#......