Con el lanzamiento de .NET 8, Microsoft introdujo una gran cantidad de nuevas características y mejoras en los marcos .NET Core y ASP.NET Core. Una de esas características es la clase SearchValues, que marca un importante paso adelante en la obtención eficiente de datos de conjuntos de datos. SearchValues es un nuevo tipo introducido en .NET 8 diseñado para mejorar el rendimiento de las aplicaciones. Al utilizar técnicas de optimización como vectorización y aceleración de hardware, SearchValues ofrece mejoras de velocidad y se combina perfectamente con .NET Core y ASP.NET Core. En este artículo, explicaremos cómo puede usar SearchValues para mejorar la velocidad de las búsquedas en .NET Core. Aplicaciones. Cree un proyecto de aplicación de consola en Visual Studio. En primer lugar, creemos un proyecto de aplicación de consola .NET Core en Visual Studio. Suponiendo que Visual Studio 2022 esté instalado en su sistema, siga los pasos que se describen a continuación para crear un nuevo proyecto de aplicación de consola .NET Core. Inicie el IDE de Visual Studio. Haga clic en «Crear nuevo proyecto». En la ventana «Crear nuevo proyecto», seleccione «Aplicación de consola (.NET Core)» de la lista de plantillas que se muestran. Haga clic en Siguiente. En la ventana «Configura tu nuevo proyecto», especifica el nombre y la ubicación del nuevo proyecto. Haga clic en Siguiente. En la ventana «Información adicional» que se muestra a continuación, elija «.NET 8.0 (soporte a largo plazo)» como la versión del marco que le gustaría utilizar. Haga clic en Crear. Usaremos este proyecto de aplicación de consola .NET 8 para trabajar con los ejemplos de código que se muestran en las secciones siguientes de este artículo. Problemas de rendimiento de la búsqueda de cadenas Las búsquedas de cadenas son una parte fundamental de muchas aplicaciones. Si bien hay varias formas de buscar cadenas, encontrar el método más eficiente en cada caso puede ser un desafío. Por ejemplo, si bien puede utilizar el método IndexOfAny() para buscar la primera aparición de un carácter en una cadena, puede que no sea el método óptimo para búsquedas posteriores en las que los datos de entrada difieren. Considere el siguiente código que ilustra cómo puede realizar una búsqueda en una cadena usando el método IndexOfAny().string str = «ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789»; carbonizarse[] c = {‘s’}; int indexOfAlpha = str.IndexOfAny(c);Si a continuación desea buscar más de un carácter en la misma cadena, necesitará una estrategia de búsqueda diferente, como se muestra en el fragmento de código que se proporciona a continuación. cadena numérica = «0123456789»; int indexOfAlphaNumeric = str.IndexOfAny(numeric.ToCharArray()); Consola.WriteLine(indexOfAlpha); Console.WriteLine(indexOfAlphaNumeric);Tenga en cuenta que hemos convertido la cadena numérica en una matriz de caracteres porque el método IndexOfAny() requiere una matriz de caracteres como parámetro. Si queremos buscar un rango de caracteres, debemos usar una cadena o un char.[].SearchValues hace que estos diferentes tipos de búsquedas sean más sencillos de codificar y más rápidos de ejecutar. Esto se debe a que SearchValues aprovecha el soporte de procesamiento vectorial en las CPU actuales que pueden procesar múltiples valores en paralelo. ¿Qué es SearchValues?
clase pública PerformanceBenchmark { carácter privado[]
charValues = { ‘s’, ‘a’, ‘m’, ‘p’, ‘l’, ‘e’ }; valores de búsqueda privados
[Benchmark]
público int IndexOfCharBenchmark() { return text.AsSpan().IndexOfAny(charValues); }
[Benchmark]
público int IndexOfSearchValuesBenchmark() { return text.AsSpan().IndexOfAny(searchValues); } }Para ejecutar las pruebas comparativas anteriores, debe especificar el siguiente código en su Program.cs.using BenchmarkDotNet.Running; utilizando SearchValuesDemo; resumen var = BenchmarkRunner.Run
Source link
Deja una respuesta