Maison > développement back-end > C++ > Comment puis-je copier efficacement les données entre les flux dans .NET?

Comment puis-je copier efficacement les données entre les flux dans .NET?

DDD
Libérer: 2025-01-31 09:16:08
original
363 Les gens l'ont consulté

How Can I Efficiently Copy Data Between Streams in .NET?

Optimisation du transfert de données entre les flux dans .NET

Les données déplacées entre les flux sont une tâche de programmation fréquente. .NET offre plusieurs méthodes, chacune adaptée à différentes versions de cadre et besoins de performances.

Copie asynchrone avec Stream.CopyToAsync (.net 4.5 et plus tard):

Pour des performances optimales dans les versions .NET plus récentes, utilisez la méthode asynchrone Stream.CopyToAsync:

using System.IO;
using System.Threading.Tasks;

// ...

await input.CopyToAsync(output);
Copier après la connexion

Cette approche asynchrone permet un traitement simultané, empêchant le blocage tandis que l'opération de copie se termine.

Copie synchrone avec Stream.CopyTo (.net 4.0 et plus tard):

Dans .NET 4.0 et versions ultérieures, la méthode synchrone Stream.CopyTo fournit une alternative plus simple pour les situations où le fonctionnement asynchrone n'est pas nécessaire:

using System.IO;

// ...

input.CopyTo(output);
Copier après la connexion

Cette méthode est simple mais bloquera l'exécution jusqu'à la fin de la copie.

Copie du flux manuel (.NET 3.5 et plus tôt):

Pour les plus anciens frameworks .NET (3,5 et moins), la copie du flux manuel est requise:

using System.IO;

public static void CopyStream(Stream input, Stream output)
{
    byte[] buffer = new byte[32768]; // Optimized buffer size
    int read;
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, read);
    }
}
Copier après la connexion

Cette méthode manuelle offre une flexibilité pour le suivi des progrès et gère les flux de longueur inconnue. La taille du tampon est un facteur clé de l'efficacité; 32768 octets est généralement un bon point de départ. L'expérimentation peut révéler des tailles optimales pour des scénarios spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal