Skip to content

Enable packed UTF-16 search on ARM64 - #132901

Closed
EgorBo wants to merge 1 commit into
dotnet:mainfrom
EgorBo:arm64-packed-utf16-search
Closed

Enable packed UTF-16 search on ARM64#132901
EgorBo wants to merge 1 commit into
dotnet:mainfrom
EgorBo:arm64-packed-utf16-search

Conversation

@EgorBo

@EgorBo EgorBo commented Aug 28, 2026

Copy link
Copy Markdown
Member

[Experiment for EgorBot]

Enables packed UTF-16 search on ARM64 for long inputs.

Note

This description was generated by GitHub Copilot.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@EgorBo

EgorBo commented Aug 28, 2026

Copy link
Copy Markdown
Member Author

@EgorBot -macos_arm -linux_arm -aws_graviton5

using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;

BenchmarkSwitcher.FromAssembly(typeof(PackedUtf16Search).Assembly).Run(args);

public class PackedUtf16Search
{
    private string _absent = null!;
    private string _late = null!;

    [Params(64, 511, 512, 1024, 4096)]
    public int Length { get; set; }

    [GlobalSetup]
    public void Setup()
    {
        _absent = new string('a', Length);
        _late = string.Concat(new string('a', Length - 1), "z");
    }

    [Benchmark]
    public int IndexOfAbsent() => _absent.AsSpan().IndexOf('z');

    [Benchmark]
    public int IndexOfLate() => _late.AsSpan().IndexOf('z');

    [Benchmark]
    public int IndexOfRangeAbsent() =>
        _absent.AsSpan().IndexOfAnyInRange('x', 'z');
}

Note

This benchmark comment was generated by GitHub Copilot.

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/area-system-buffers
See info in area-owners.md if you want to be subscribed.

@EgorBo

EgorBo commented Aug 28, 2026

Copy link
Copy Markdown
Member Author

@MihaZupan this is mostly AI slop, but it seems to improve performance for real-world uses. Can you take over when you have time? We need this for arm64 customers.

@EgorBo EgorBo closed this Aug 28, 2026
@MihaZupan

Copy link
Copy Markdown
Member

I ripped it out because it regressed early exits (i.e. Regex) benchmarks.
Might be worth looking into splitting by length like you're doing here ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants