Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 3255|Respuesta: 2

[Fuente] .NET/C# Alto rendimiento fusiona varios archivos en un solo archivo

[Copiar enlace]
Publicado el 14-2-2024 12:04:26 | | | |
Requisitos: Al usar archivos grandes para subir en bloques, el backend debe fusionar diferentes bloques en un solo archivo en orden, o al cortar el archivo de archivo, fusionar los archivos de corte con el archivo fuente.

Linux utiliza splits de corte de archivos divididos
https://www.itsvse.com/thread-10716-1-1.html

Primero, prepara dos archivos de 100M para pruebas, con el siguiente comando:

Windows crea un archivo del tamaño especificado
https://www.itsvse.com/thread-10732-1-1.html

El código es el siguiente:


Se probaron dos escenarios de fusión diferentes. Como se muestra a continuación:



Comienza las pruebas con VS 2022 debug -> Profiler -> marca ".NET Object Allocation Trace":



Tamaño total de la fusión1 es: 16.778.034, tamaño total de la fusión2 es: 164.270,La asignación total muestra que merge1 es 102 veces mayor que merge2, y cuanto mayor es, peor es el rendimiento

Utiliza PerfView para ver por separado los análisis de CPU Stacks y GC Heap Net Mem Stacks, como se muestra en la siguiente figura:



Comentario:Inc% - El coste incluido se expresa como un porcentaje del coste total para todas las muestras(100% para nodos ROOT). Se puede ordenar por ello.





Anterior:Windows crea un archivo del tamaño especificado
Próximo:Introducción y diferencia entre la compilación de JIT y AOT en .NET
 Propietario| Publicado el 14-2-2024 12:09:30 |
Prueba con VS 2022 Debug -> Performance Profiler -> marca "Uso de memoria":

  • merge1 ocupa 808MB cuando se ejecuta
  • merge2 ocupa 12MB cuando se ejecuta




Si el método merge2 se ejecuta solo, el programa arranca 6MB y siempre ocupa 6MB durante la ejecución de la función y tras completarse.
 Propietario| Publicado el 2025-1-1 10:20:06 |
Optimiza el estilo de escritura

Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com