On 2024-07-03 12:41, Hartmut Goebel <h.goe...@crazy-compilers.com> wrote:
> Am 03.07.24 um 13:43 schrieb Peter J. Holzer:
>> Ineffizient?
>
> Ja, denn wenn der String erst als ganzes formatiert wird, muss erstmal 
> der Speicher für den ganzen String alloziert werden, ehe der String 
> ausgegeben werden kann.
>
> Das mag von Pythons Speicher-Management abgefangen werden und auf 
> aktuellen Rechnern nicht messbar sein - trotzdem wird mehr Rechenzeit 
> und Speicher benötigt :-)

Wie gesagt, meine Tests ergeben, dass print("x", x) langsamer ist. Was
auch immer print() da im Hintergrund macht, es braucht *mehr* Rechenzeit
und möglicherweise auch mehr Speicher.

Kontrafaktisch die ineffizientere Lösung mit der Begründung einer
Effizienzsteigerung zu vertreten, hat zwar in der IT Tradition, aber es
ist keine gute Tradition.

Ich sehe Deinen Smiley, aber ich reite trotzdem darauf herum: Ich erlebe
es immer wieder, dass Leute Programme auf Grund einer vagen Idee
"optimieren", ohne vorher zu messen, ob das tatsächlich ein Bottleneck
ist. Am Ende ist das Programm dann nicht schneller (vielleicht sogar
langsamer), schlechter lesbar, und sie haben einen Haufen Arbeitszeit
verschwendet.

Wenn man wirklich optimieren möchte (und nicht nur Zeit totschlagen),
dann muss man dort anfangen, wo am meisten Zeit aufgewendet wird. Daraus
ergeben sich dann meistens Änderungen im Algorithmus. Oder gar -
shockingly - die Erkenntnis, dass das bei Python der Interpreter selbst
ist. Pypy statt CPython kann einen ordentlichen Performance-Boost
bringen. Teile mit Cython zu kompilieren oder gar in einer anderen
Programmiersprache zu implementieren noch mehr. An den Details einer
Stringformatierung herumzudoktern ziemlich sicher nicht.

        hp
_______________________________________________
python-de Mailingliste -- python-de@python.org
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an 
python-de-le...@python.org
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: arch...@mail-archive.com

Reply via email to