Subscriber Question: How to remove characters from a string efficiently?

Поділитися
Вставка

КОМЕНТАРІ • 10

  • @jetonpeche
    @jetonpeche 19 днів тому +3

    tres cool comme format !

  • @patrickbahi1463
    @patrickbahi1463 18 днів тому +1

    Merci Christophe pour cette vidéo et ce format

  • @krcarbo
    @krcarbo 19 днів тому +2

    Salut Christophe, sympa comme format. Je n'aurais pas imaginé la Regex si loin en termes de performance/consommation.

    • @HTSCoding
      @HTSCoding  19 днів тому

      Comme quoi, il faut toujours mesurer et benchmarker, encore plus par rapport à son propre scénario :-) (je t'avoue que j'aurais pensé la Regex source-gen comme étant aussi assez perf)

  • @arius8075
    @arius8075 17 днів тому +1

    Merci Christophe pour la vidéo !
    Après la question (je pense) est assez vite répondu, quand on sais comment fonctionne la "famille" des Span, et que c'est sur la pile,
    L'usage des Span se rapproche très fortement sur la vision qu'on pourrait avoir en C++

  • @Cirfain
    @Cirfain День тому

    Hello, Je ne sais pas utiliser le benchmarking (mais si un jour tu fais une vidéo dédiée... ;) )
    J'ai toujours utilisé les outils fournit par le c# de base comme le replace et autre extension de String que je trouve pas mal utile.
    DateTime d1 = DateTime.Now; //pour le bench
    string items = "aaa;-bbb;ccc;ddd-;eee;ff-f";
    StringBuilder sfinal = new();
    foreach (String s in items.Split(';'))
    {
    sfinal.Append(s.Contains('-') ? s.Replace("-", "") : s).Append(";");
    }
    //bench et affichage
    DateTime d2 = DateTime.Now;
    double ms = (d2 - d1).TotalMilliseconds;
    Console.WriteLine(sfinal);
    Console.WriteLine(ms.ToString());
    J'arrive à 7 ms
    Et si c'est juste les - à virer sans s'occuper des blocs alors seulement le replace est utile.
    A+
    Olivier

    • @HTSCoding
      @HTSCoding  14 годин тому

      Pour la partie benchmarking, j'avais fait une vidéo à l'époque qui a finit en vidéo réservée aux membres.
      Pour ce qui est de la proposition, le souci avec cette approche, c'est que ça remplace les "-", ça ne supprime pas du retour les éléments qui les contiennent (ce qui était la demande initiale). S'il s'agit d'un simplement remplacement, je pense que tu n'a même pas besoin de Split, juste à faire un Replace sur la chaine directement pour obtenir une nouvelle chaîne (et ce sera plus efficace niveau consommation mémoire ;-) )

    • @Cirfain
      @Cirfain 11 годин тому

      @@HTSCoding J'avais mal compris la demande d'enlever les blocks avec -
      Dans ce cas, l'approche reste la même : on remplace
      sfinal.Append(s.Contains('-') ? s.Replace("-", "") : s.Append(";");
      par
      if (!s.Contains('-')) sfinal.Append(s).Append(';');
      Et ça ne rajoute que les blocks sans le "-" dans la chaine final et toujours 7ms.

    • @HTSCoding
      @HTSCoding  11 годин тому

      Oui, c'est sûr, mais niveau mémoire, ton Split pour le foreach va créer en mémoire un tableau de N string (correspondant à chacun des blocs)