AYUDA .NET

Dottrace .NET Core (Cómo funciona para desarrolladores)

Presentamos Dottrace .NET Core, una herramienta poderosa en el ecosistema .NET que sirve como una herramienta esencial de .NET para el perfilado de rendimiento. Como un .NET profiler de rendimiento, la herramienta de trazado .NET permite a los desarrolladores capturar archivos de trazado detallados que proporcionan información sobre los eventos de ejecución de un proceso en funcionamiento. Esta herramienta es indispensable para optimizar aplicaciones construidas en el marco de trabajo .NET.

Tanto si está realizando pruebas unitarias como integrando compilaciones de integración continua, Dottrace le permite supervisar y analizar eficazmente el rendimiento de sus aplicaciones. Aprovechando esta herramienta, puede obtener un conocimiento más profundo del comportamiento de su aplicación, garantizando el máximo rendimiento y fiabilidad.

IronPDF es una biblioteca completa para trabajar con PDFs en aplicaciones de .NET. Permite crear, editar y extraer contenido de archivos PDF. IronPDF admite funciones como la conversión de HTML a PDF, la fusión y la división de PDF. Esta biblioteca es una valiosa herramienta para cualquier aplicación que necesite generar o manipular documentos PDF. Este artículo utilizará esta biblioteca junto con Dottrace para expresar una aplicación real de la eficacia de Dottrace y IronPDF.

Primeros pasos con Dottrace .NET Core

Configuración de Dottrace .NET Core en proyectos .NET

En primer lugar, debe instalar Dottrace .NET Core mediante NuGet. Abra Visual Studio y siga estos pasos:

  1. Abre Visual Studio.

  2. Seleccione Crear un nuevo proyecto.

  3. Elige Aplicación de Consola (.NET Core) y haz clic en Siguiente.

  4. Nombra tu proyecto DottraceExample y haz clic en Crear.

  5. En Solution Explorer, haga clic derecho en el proyecto y seleccione Manage NuGet Packages.

  6. En el Administrador de paquetes NuGet, busca JetBrains.dotTrace.CommandLineTools.

  7. Seleccione el paquete y haga clic en Instalar.

    Esto instala Dottrace como una dependencia en su proyecto.

    Dottrace .NET Core (Cómo funciona para desarrolladores): Figura 1 - El paquete JetBrains.dotTrace para instalar

Creación de perfiles de una aplicación de consola sencilla

Vamos a crear una aplicación de consola básica para perfilar. Reemplaza el código en Program.cs con lo siguiente:

using System;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Starting application...");
        Thread.Sleep(5000); // Simulating a time-consuming operation
        Console.WriteLine("Application finished.");
    }
}
using System;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Starting application...");
        Thread.Sleep(5000); // Simulating a time-consuming operation
        Console.WriteLine("Application finished.");
    }
}
Imports System
Imports System.Threading
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Console.WriteLine("Starting application...")
		Thread.Sleep(5000) ' Simulating a time-consuming operation
		Console.WriteLine("Application finished.")
	End Sub
End Class
$vbLabelText   $csharpLabel

Compila y ejecuta tu aplicación presionando F5. Una vez que la aplicación se esté ejecutando, necesitará su ID de proceso para la creación de perfiles. Puedes encontrar el ID del proceso utilizando la ventana de Herramientas de Diagnóstico de Visual Studio o verificando el Administrador de tareas.

Para perfilar tu aplicación utilizando Dottrace, abre una ventana de terminal o la Consola del Administrador de Paquetes en Visual Studio y ejecuta:

dotnet trace collect --process-id <your-process-id> --output trace.nettrace
dotnet trace collect --process-id <your-process-id> --output trace.nettrace
SHELL

Reemplace <your-process-id> con el ID de proceso real de su aplicación en ejecución.

Después de que termine tu aplicación, tendrás un archivo trace.nettrace. Este archivo contiene todos los datos de perfil recopilados durante la ejecución de la aplicación. Puede analizar este archivo en Visual Studio. Sigue estos pasos:

  1. Abre Visual Studio.

  2. Ve a Archivo > Abrir > Archivo.

  3. Seleccione el archivo trace.nettrace y haga clic en Abrir.

    Visual Studio mostrará datos de rendimiento detallados, lo que le permitirá identificar y solucionar los cuellos de botella en el rendimiento.

    Ahora que ha configurado Dottrace y creado un ejemplo básico de creación de perfiles, puede pasar a implementar funciones más avanzadas.

Características de Dottrace .NET Core

Análisis del uso de la CPU

Una de las características clave de Dottrace .NET Core es el análisis del uso de la CPU. Esto le ayuda a identificar qué partes de su código consumen más recursos de CPU. He aquí cómo hacerlo:

En primer lugar, inicie su aplicación en Visual Studio. Luego, en el terminal o en la Consola del Administrador de Paquetes, ejecute:

dotnet trace collect --process-id <your-process-id> --output cpu_usage.nettrace
dotnet trace collect --process-id <your-process-id> --output cpu_usage.nettrace
SHELL

Reemplace <your-process-id> con el ID de proceso real de su aplicación. Una vez que la sesión de perfilado esté completa, abre el archivo cpu_usage.nettrace en Visual Studio:

using System;
using System.Diagnostics;
class Program
{
    static void Main(string[] args)
    {
        var sw = new Stopwatch();
        sw.Start();
        // Simulate a CPU-intensive operation
        for (int i = 0; i < 1000000000; i++) { }
        sw.Stop();
        Console.WriteLine($"Elapsed Time: {sw.ElapsedMilliseconds} ms");
    }
}
using System;
using System.Diagnostics;
class Program
{
    static void Main(string[] args)
    {
        var sw = new Stopwatch();
        sw.Start();
        // Simulate a CPU-intensive operation
        for (int i = 0; i < 1000000000; i++) { }
        sw.Stop();
        Console.WriteLine($"Elapsed Time: {sw.ElapsedMilliseconds} ms");
    }
}
Imports System
Imports System.Diagnostics
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim sw = New Stopwatch()
		sw.Start()
		' Simulate a CPU-intensive operation
		For i As Integer = 0 To 999999999
		Next i
		sw.Stop()
		Console.WriteLine($"Elapsed Time: {sw.ElapsedMilliseconds} ms")
	End Sub
End Class
$vbLabelText   $csharpLabel

Este código simula una operación intensiva de la CPU. Cuando analices el archivo cpu_usage.nettrace, verás que el bucle toma una cantidad significativa de tiempo de CPU.

Supervisión de la asignación de memoria

Dottrace .NET Core también puede ayudarle a supervisar la asignación de memoria en su aplicación. Esto es crucial para identificar fugas de memoria y optimizar su uso.

Ejecute su aplicación y recopile los datos de asignación de memoria:

dotnet trace collect --process-id <your-process-id> --output memory_allocation.nettrace
dotnet trace collect --process-id <your-process-id> --output memory_allocation.nettrace
SHELL

Después de la sesión, abre el archivo memory_allocation.nettrace en Visual Studio:

using System;
class Program
{
    static void Main(string[] args)
    {
        for (int i = 0; i < 10000; i++)
        {
            var data = new byte[1024]; // Allocate 1KB
        }
        Console.WriteLine("Memory allocation completed.");
    }
}
using System;
class Program
{
    static void Main(string[] args)
    {
        for (int i = 0; i < 10000; i++)
        {
            var data = new byte[1024]; // Allocate 1KB
        }
        Console.WriteLine("Memory allocation completed.");
    }
}
Imports System
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		For i As Integer = 0 To 9999
			Dim data = New Byte(1023){} ' Allocate 1KB
		Next i
		Console.WriteLine("Memory allocation completed.")
	End Sub
End Class
$vbLabelText   $csharpLabel

Este código asigna memoria en un bucle. Analizar el archivo memory_allocation.nettrace mostrará cuánta memoria se asigna y dónde ocurre en su código.

Creación de perfiles de operaciones de E/S

Otra característica esencial es la creación de perfiles de las operaciones de E/S. Le ayuda a comprender el impacto en el rendimiento de la lectura y escritura de archivos.

Inicia tu aplicación y recoge los datos de E/S:

dotnet trace collect --process-id <your-process-id> --output io_operations.nettrace
dotnet trace collect --process-id <your-process-id> --output io_operations.nettrace
SHELL

Abra el archivo io_operations.nettrace en Visual Studio para su análisis:

using System;
using System.IO;
class Program
{
    static void Main(string[] args)
    {
        var filePath = "test.txt";
        // Write to file
        using (var writer = new StreamWriter(filePath))
        {
            for (int i = 0; i < 1000; i++)
            {
                writer.WriteLine("This is a test line.");
            }
        }
        // Read from file
        using (var reader = new StreamReader(filePath))
        {
            while (reader.ReadLine() != null) { }
        }
        Console.WriteLine("I/O operations completed.");
    }
}
using System;
using System.IO;
class Program
{
    static void Main(string[] args)
    {
        var filePath = "test.txt";
        // Write to file
        using (var writer = new StreamWriter(filePath))
        {
            for (int i = 0; i < 1000; i++)
            {
                writer.WriteLine("This is a test line.");
            }
        }
        // Read from file
        using (var reader = new StreamReader(filePath))
        {
            while (reader.ReadLine() != null) { }
        }
        Console.WriteLine("I/O operations completed.");
    }
}
Imports System
Imports System.IO
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim filePath = "test.txt"
		' Write to file
		Using writer = New StreamWriter(filePath)
			For i As Integer = 0 To 999
				writer.WriteLine("This is a test line.")
			Next i
		End Using
		' Read from file
		Using reader = New StreamReader(filePath)
			Do While reader.ReadLine() IsNot Nothing
			Loop
		End Using
		Console.WriteLine("I/O operations completed.")
	End Sub
End Class
$vbLabelText   $csharpLabel

Este código escribe y lee desde un archivo. Analizar el archivo io_operations.nettrace revelará el tiempo dedicado a las operaciones de E/S.

Identificación de cuellos de botella en el rendimiento

Identificar los cuellos de botella en el rendimiento es uno de los principales objetivos del uso de Dottrace. Analizando los archivos de rastreo recopilados, puede localizar las partes lentas de su código.

Inicie su aplicación y recopile datos de rendimiento:

dotnet trace collect --process-id <your-process-id> --output performance_bottlenecks.nettrace
dotnet trace collect --process-id <your-process-id> --output performance_bottlenecks.nettrace
SHELL

Abra el archivo performance_bottlenecks.nettrace en Visual Studio:

using System;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Starting application...");
        // Simulate a time-consuming operation
        Thread.Sleep(5000);
        Console.WriteLine("Application finished.");
    }
}
using System;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Starting application...");
        // Simulate a time-consuming operation
        Thread.Sleep(5000);
        Console.WriteLine("Application finished.");
    }
}
Imports System
Imports System.Threading
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Console.WriteLine("Starting application...")
		' Simulate a time-consuming operation
		Thread.Sleep(5000)
		Console.WriteLine("Application finished.")
	End Sub
End Class
$vbLabelText   $csharpLabel

Este código simula un retraso en la aplicación. Analizar el archivo performance_bottlenecks.nettrace mostrará dónde se gasta la mayor parte del tiempo, ayudándote a optimizar esas partes.

Estos ejemplos cubren las características clave de Dottrace .NET Core. Ahora puede analizar el uso de la CPU, supervisar la asignación de memoria, perfilar las operaciones de E/S, identificar cuellos de botella en el rendimiento y realizar perfiles en entornos de producción. Cada característica te ayuda a optimizar y mejorar tus aplicaciones de .NET Core.

Integración de Dottrace con IronPDF

Introducción a IronPDF

Dottrace .NET Core (Cómo Funciona para Desarrolladores): Figura 2 - página web de IronPDF

IronPDF es una potente biblioteca de .NET que te permite generar, editar y gestionar PDFs fácilmente dentro de tus aplicaciones C#. Tanto si necesita crear nuevos PDF desde cero, convertir HTML a PDF o manipular PDF existentes, IronPDF le ofrece un amplio conjunto de funciones para realizar estas tareas con eficacia. Es beneficioso para las aplicaciones que requieren la generación y el procesamiento de PDF, como los sistemas de generación de informes, las soluciones de gestión de documentos y las aplicaciones web.

Caso práctico de fusión de IronPDF con Dottrace

Considere un escenario en el que tiene una aplicación web que genera informes PDF para los usuarios. Mediante el uso de Dottrace, puede realizar un seguimiento del rendimiento del proceso de generación de PDF, identificar problemas de rendimiento utilizando el archivo de seguimiento y realizar mejoras para mejorar la experiencia del usuario. Esta integración es especialmente valiosa para aplicaciones que manejan grandes volúmenes de documentos PDF o requieren un procesamiento de alto rendimiento.

Ejemplo de código del caso de uso

A continuación se muestra un ejemplo de código completo que demuestra cómo integrar IronPDF con Dottrace. Este ejemplo crea una simple conversión de HTML a PDF y utiliza Dottrace para monitorizar el rendimiento de la operación.

using System;
using IronPdf;
using Microsoft.Diagnostics.Tracing;
using Microsoft.Diagnostics.Tracing.Session;
class Program
{
    static void Main(string[] args)
    {
        // Start tracing session
        using (var session = new TraceEventSession("MySession"))
        {
            session.EnableProvider("Microsoft-Windows-DotNETRuntime");
            // Perform PDF generation
            var pdfDocument = GeneratePdf("Hello, world!");
            // Save the PDF to a file
            pdfDocument.SaveAs("example.pdf");
            // Stop tracing session
            session.Stop();
        }
        Console.WriteLine("PDF generated and performance traced successfully.");
    }
    static PdfDocument GeneratePdf(string htmlContent)
    {
        // Create an instance of the HtmlToPdf renderer
        var renderer = new ChromePdfRenderer();
        // Convert HTML to PDF
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        return pdfDocument;
    }
}
using System;
using IronPdf;
using Microsoft.Diagnostics.Tracing;
using Microsoft.Diagnostics.Tracing.Session;
class Program
{
    static void Main(string[] args)
    {
        // Start tracing session
        using (var session = new TraceEventSession("MySession"))
        {
            session.EnableProvider("Microsoft-Windows-DotNETRuntime");
            // Perform PDF generation
            var pdfDocument = GeneratePdf("Hello, world!");
            // Save the PDF to a file
            pdfDocument.SaveAs("example.pdf");
            // Stop tracing session
            session.Stop();
        }
        Console.WriteLine("PDF generated and performance traced successfully.");
    }
    static PdfDocument GeneratePdf(string htmlContent)
    {
        // Create an instance of the HtmlToPdf renderer
        var renderer = new ChromePdfRenderer();
        // Convert HTML to PDF
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        return pdfDocument;
    }
}
Imports System
Imports IronPdf
Imports Microsoft.Diagnostics.Tracing
Imports Microsoft.Diagnostics.Tracing.Session
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Start tracing session
		Using session = New TraceEventSession("MySession")
			session.EnableProvider("Microsoft-Windows-DotNETRuntime")
			' Perform PDF generation
			Dim pdfDocument = GeneratePdf("Hello, world!")
			' Save the PDF to a file
			pdfDocument.SaveAs("example.pdf")
			' Stop tracing session
			session.Stop()
		End Using
		Console.WriteLine("PDF generated and performance traced successfully.")
	End Sub
	Private Shared Function GeneratePdf(ByVal htmlContent As String) As PdfDocument
		' Create an instance of the HtmlToPdf renderer
		Dim renderer = New ChromePdfRenderer()
		' Convert HTML to PDF
		Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
		Return pdfDocument
	End Function
End Class
$vbLabelText   $csharpLabel

Dottrace .NET Core (Cómo Funciona Para Desarrolladores): Figura 3 - Salida de consola del ejemplo de código anterior

En este ejemplo, comenzamos creando un TraceEventSession para capturar datos de rendimiento usando Dottrace. A continuación, generamos un PDF a partir de una simple cadena HTML utilizando IronPDF. Después de guardar el PDF, detenemos la sesión de rastreo.

Dottrace .NET Core (Cómo Funciona para Desarrolladores): Figura 4 - PDF generado del ejemplo de código anterior

Esto nos permite supervisar el rendimiento del proceso de generación de PDF y obtener información valiosa sobre su ejecución.

Conclusión

Explore la página de Opciones de Licencias de IronPDF para conocer las licencias disponibles y sus respectivos precios.

Al integrar Dottrace con IronPDF, puede mejorar significativamente el rendimiento y la fiabilidad de sus procesos de generación de PDF. Esta integración proporciona información valiosa sobre el modo en que su aplicación gestiona las tareas de PDF, lo que le ayuda a optimizar las operaciones y a garantizar una experiencia de usuario fluida. IronPDF ofrece un conjunto completo de características para trabajar con PDFs, lo que lo convierte en una herramienta esencial para cualquier desarrollador de .NET.

IronPDF ofrece una prueba gratuita, y las licencias comienzan desde $749, permitiéndole evaluar sus capacidades antes de realizar una compra. La combinación de la potencia de Dottrace e IronPDF puede ayudarle a crear aplicaciones eficientes y de alto rendimiento que satisfagan las necesidades de sus usuarios.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
Ejemplo de Supersocket en C# (Cómo funciona para desarrolladores)
SIGUIENTE >
Deedle C# (Cómo funciona para desarrolladores)