Como o .NET encontra uma substring com SIMD | C# e IndexOf
Pedro Sakuma Travi
0:00 / 0:00
Como o .NET encontra uma substring com SIMD | C# e IndexOf
81 просмотр · 2 нед. назад
Pedro Sakuma Travi
4 подписчика
81 просмотр · 2 нед. назад
Como ReadOnlySpan.IndexOf encontra uma substring? Vamos acompanhar o caminho SIMD do .NET: comparações vetoriais, filtro de candidatos, extração da máscara e confirmação da sequência completa.
O ponto de partida é um benchmark em que IndexOf foi cerca de 24× mais rápido que uma busca ingênua. Esse resultado vale para o cenário e a máquina medidos — não é uma promessa de desempenho para qualquer string.
A explicação visual separa o exemplo didático das entradas do benchmark e acompanha o código, os vetores e as variáveis locais em cada etapa.
📖 Artigo com código, diagramas, assembly e instruções para reproduzir o benchmark:
https://dev.to/pedrosakuma/como-reado...
CAPÍTULOS
00:00 O resultado que surpreende
00:27 O contexto da medição
00:57 O contrato da busca
01:19 Duas implementações, o mesmo contrato
01:50 Resultados por cenário
02:28 SIMD: vetores, lanes e registradores
03:21 Filtrando possíveis inícios
07:18 Da máscara ao match confirmado
09:58 O exemplo não é o benchmark
10:35 Avanço, último bloco e conclusão
CONTEXTO TÉCNICO
• Código do runtime: .NET 10.0.12
• Ambiente medido: Linux x64, AMD EPYC 7763, AVX2
• BenchmarkDotNet com MediumRun
• Comparação ordinal de unidades de código UTF-16
• Walkthrough do caminho Vector256
O benchmark compara implementações com algoritmos diferentes; ele não isola apenas o custo da abstração ou do SIMD.
Narração sintetizada com ElevenLabs.
#dotnet #csharp #SIMD