Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #4916

Re: [Python-de] strings zusammensetzen.

From "Peter J. Holzer" <hjp-usenet3@hjp.at>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] strings zusammensetzen.
Date 2017-09-17 12:34 +0200
Organization LUGA
Message-ID <slrnorsju5.igr.hjp-usenet3@hrunkner.hjp.at> (permalink)
References (3 earlier) <ddda1a2e-3b8b-0783-c5eb-2eeaa751e8c9@behnel.de> <mailman.263.1505550817.15585.python-de@python.org> <slrnorr3db.686.hjp-usenet3@hrunkner.hjp.at> <5aa2ef70-f2ac-bab4-7c58-48f25a93171e@behnel.de> <mailman.278.1505629198.15585.python-de@python.org>

Show all headers | View raw


On 2017-09-17 06:19, Stefan Behnel <python-de@behnel.de> wrote:
> Peter J. Holzer schrieb am 16.09.2017 um 22:46:
>> Gerade bei langen Listen sollte man darauf verzichten, sie
>> aufzubauen, wenn man sie nicht unbedingt braucht
>
> Natürlich. Einzig darauf zielt dein Beispielcode ja auch ab.
>
> Gilt übrigens genauso für lange Strings.

Natürlich. Wenn man den langen String nie braucht, soll man ihn auch
nicht aufbauen. Gerade, wenn der String an einen Konsumenten geschickt
werden soll, der ihn dann gleich wieder parst, hat man auch noch den
Vorteil, dass Produzent und Konsument sich zeitlich überlappen können,
wenn der Produzent Teile des Outputs so früh wie möglich schickt. Geht
aber leider nicht immer: Manche Protokolle brauchen z.B. eine
Längenangabe im Header und dafür muss man den Output erst mal komplett
haben, um die Länge bestimmen zu können.

>> (habe damit erst kürzlich 8 GB eingespart - pro Prozess (das war Perl
>> und nicht Python, aber die beiden Sprachen sind sich da sehr
>> ähnlich)).
>
> Wie du hier korrekt andeutest, handelt es sich bei dem gegebenen Fall um
> eine Optimierung. Optimierung bedeutet ja, dass du eigentlich gut
> geschriebenen Code ersetzt durch etwas, was dem spezifischen Anwendungsfall
> stärker angepasst ist und (nachweislich) unter den erwarteten Bedingungen
> effizienter funktioniert. Mit dem Risiko, dass es unter anderen (eben nicht
> erwarteten) Bedingungen vielleicht auch weniger gut funktioniert.

Richtig. Wobei in diesem Fall allerdings beide Varianten von der
Code-Länge und Lesbarkeit her ziemlich vergleichbar waren. Im Gegensatz
zu manchen anderen Fällen, wo es klar eine "saubere" und eine optimierte
Variante gibt, gab es hier zwei Varianten, die zwar verschiedenen
Ansätzen (eher prozedural und eher funktional) folgten, aber (für meinen
Geschmack) beide gleich sauber waren. Da dann die Variante zu wählen,
die weniger Speicher braucht und schneller ist, ist ein No-Brainer (und
ja, ich habe beide Varianten gebenchmarkt, bevor ich die Änderung
durchgeführt habe).

Bei dem kleinen Test-Programm sehe ich das ähnlich: Die Variante mit
join ist *nicht* klar sauberer. Eher im Gegenteil: Sie baut explizit
eine unnötige Datenstruktur auf, das empfinde ich als unelegant. (Etwas
anderes ist es, wenn die Datenstruktur nur implizit aufgebaut wird: Mit
map statt der explizitien Schleife (was bei diesem Trivialbeispiel
natürlich leicht möglich gewesen wäre) wäre der Code für mich eindeutig
eleganter und damit wäre eine möglich Optimierung nur sinnvoll, wenn die
positiven Effekte zur Laufzeit die negativen Effekte für den
Programmierer überwiegen.)

Aber im wesentlichen ging es mir eben um Deine dogmatisch vorgetragene
Aussage:

| join() ist in jedem Fall die bessere Variante bei vielen Strings.

Das sehe ich eben nicht so. Gerade bei vielen Strings gibt es Fälle, wo
es besser ist, den String stückweise in einer Schleife aufzubauen.

| Konkatenierung ist ok bei einer überschaubaren Menge und da
| insbesondere bei kurzen Strings, sollte aber in Schleifen vermieden
| werden.

Und wie nun ausführlich begründet, sehe ich das genau umgekehrt: Bei
kurzen Strings, die aus wenigek Komponenten zusammengesetzt werden, ist
beides Ok. Bei langen Strings, die aus vielen Komponenten aufgebaut
werden, sollte man sich überlegen, ob nicht eine explizite Schleife
besser ist als ein Join.

        hp


-- 
   _  | Peter J. Holzer    | Fluch der elektronischen Textverarbeitung:
|_|_) |                    | Man feilt solange an seinen Text um, bis
| |   | hjp@hjp.at         | die Satzbestandteile des Satzes nicht mehr
__/   | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel

Back to de.comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-08-25 07:45 +0200
  Re: [Python-de] strings zusammensetzen. Mike Müller <mmueller@python-academy.de> - 2017-08-25 08:00 +0200
  Re: [Python-de] strings zusammensetzen. Stefan Behnel <python-de@behnel.de> - 2017-08-25 08:05 +0200
  Re: [Python-de] strings zusammensetzen. Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2017-08-25 09:08 +0200
  Re: [Python-de] strings zusammensetzen. "Tobias Herp" <tobias.herp@gmx.de> - 2017-08-25 10:28 +0200
    Re: [Python-de] strings zusammensetzen. ole-usenet-spam@gmx.net (Оlе Ѕtrеісhеr) - 2017-08-25 10:47 +0200
      Re: [Python-de] strings zusammensetzen. Tobias Herp <tobias.herp@gmx.de> - 2017-08-25 23:28 +0200
        Re: [Python-de] strings zusammensetzen. ole-usenet-spam@gmx.net (Оlе Ѕtrеісhеr) - 2017-08-26 10:30 +0200
      Re: [Python-de] strings zusammensetzen. Peter Otten <__peter__@web.de> - 2017-08-26 13:29 +0200
      Re: [Python-de] strings zusammensetzen. "Walter Dörwald" <walter@livinglogic.de> - 2017-08-29 17:21 +0200
        Re: [Python-de] strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-08-30 07:26 +0200
          Re: [Python-de] strings zusammensetzen. Stefan Behnel <python-de@behnel.de> - 2017-08-30 07:48 +0200
            Re: [Python-de] strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-08-30 08:04 +0200
              Re: [Python-de] strings zusammensetzen. ole-usenet-spam@gmx.net (Оlе Ѕtrеісhеr) - 2017-08-30 08:23 +0200
                Re: [Python-de] strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-08-30 09:37 +0200
                Re: [Python-de] strings zusammensetzen. Peter Otten <__peter__@web.de> - 2017-08-30 10:23 +0200
                Re: [Python-de] strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-08-30 20:00 +0200
              Re: [Python-de] strings zusammensetzen. "Peter Heitzer" <peter.heitzer@rz.uni-regensburg.de> - 2017-08-30 08:30 +0000
                Re: [Python-de] strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-08-30 20:03 +0200
                Re: [Python-de] strings zusammensetzen. Thomas Orgelmacher <trash@odbs.org> - 2017-08-30 20:21 +0200
                Re: [Python-de] strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-08-31 14:31 +0200
                Re: [Python-de] strings zusammensetzen. Thomas Orgelmacher <trash@odbs.org> - 2017-08-31 19:26 +0200
                Re: [Python-de] strings zusammensetzen. Peter Otten <__peter__@web.de> - 2017-08-30 21:24 +0200
                Re: [Python-de] strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-08-31 14:40 +0200
                Re: [Python-de] strings zusammensetzen. Peter Otten <__peter__@web.de> - 2017-08-31 15:26 +0200
                Re: [Python-de] strings zusammensetzen. "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2017-09-16 09:45 +0200
                Re: [Python-de] strings zusammensetzen. Thomas Orgelmacher <trash@odbs.org> - 2017-08-31 19:11 +0200
                Re: [Python-de] strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-09-01 09:12 +0200
                Re: [Python-de] strings zusammensetzen. Thomas Orgelmacher <trash@odbs.org> - 2017-09-01 21:06 +0200
                Re: [Python-de] strings zusammensetzen. Stefan Behnel <python-de@behnel.de> - 2017-09-01 21:43 +0200
                Re: [Python-de] strings zusammensetzen. Arnold Krille <arnold@arnoldarts.de> - 2017-09-02 15:23 +0200
          Re: [Python-de] strings zusammensetzen. "Walter Dörwald" <walter@livinglogic.de> - 2017-08-30 11:53 +0200
          Re: [Python-de] strings zusammensetzen. Mike Müller <mmueller@python-academy.de> - 2017-08-30 16:14 +0200
  Re: [Python-de] strings zusammensetzen. Mike Müller <mmueller@python-academy.de> - 2017-08-25 11:18 +0200
  Re: [Python-de] strings zusammensetzen. Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2017-08-25 12:40 +0200
  Re: [Python-de] strings zusammensetzen. Tobias Herp <tobias.herp@gmx.de> - 2017-08-25 23:41 +0200
  Re: [Python-de] strings zusammensetzen. "Dr. Volker Jaenisch" <volker.jaenisch@inqbus.de> - 2017-08-26 02:34 +0200
  Re: strings zusammensetzen. Thomas Orgelmacher <trash@odbs.org> - 2017-08-29 19:05 +0200
    Re: strings zusammensetzen. ole-usenet-spam@gmx.net (Оlе Ѕtrеісhеr) - 2017-08-30 08:32 +0200
    Re: strings zusammensetzen. "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2017-09-16 09:28 +0200
      Re: [Python-de] strings zusammensetzen. Stefan Behnel <python-de@behnel.de> - 2017-09-16 10:33 +0200
        Re: [Python-de] strings zusammensetzen. "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2017-09-16 22:46 +0200
          Re: [Python-de] strings zusammensetzen. Stefan Behnel <python-de@behnel.de> - 2017-09-17 08:19 +0200
            Re: [Python-de] strings zusammensetzen. "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2017-09-17 12:34 +0200
          Re: [Python-de] strings zusammensetzen. ole-usenet-spam@gmx.net (Оlе Ѕtrеісhеr) - 2017-09-17 10:50 +0200
            Re: [Python-de] strings zusammensetzen. Stefan Behnel <python-de@behnel.de> - 2017-09-17 11:14 +0200
            Re: [Python-de] strings zusammensetzen. "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2017-09-17 14:19 +0200
      Re: strings zusammensetzen. Hermann Riemann <nospam.ng@hermann-riemann.de> - 2017-09-16 16:19 +0200
        Re: [Python-de] strings zusammensetzen. Stefan Behnel <python-de@behnel.de> - 2017-09-16 17:30 +0200

csiph-web