Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Dinu Gherman Newsgroups: de.comp.lang.python Subject: Re: [Python-de] =?utf-8?q?Syntax-Erweiterung_f=C3=BCr_Schleifen_in_P?= =?utf-8?q?ython3?= Date: Wed, 6 Apr 2016 22:56:34 +0200 Lines: 127 Message-ID: References: <57040A52.9020404@thomas-guettler.de> <5704A110.4030006@behnel.de> <6E439C3C-FC40-4CAA-827C-8ACDE3DC85F2@zopyx.com> <57051734.6020207@thomas-guettler.de> <57051C5F.1080808@chrisarndt.de> <570553C5.80101@sschwarzer.net> <57055E23.40602@inqbus.de> Mime-Version: 1.0 (1.0) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: news.uni-berlin.de 0K5cjm1ivYyxdcYujhb1MgsVAIXdYZ/wIIw9KTuR9kHQ== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org X-Envelope-From: gherman@darwin.in-berlin.de X-Mailer: iPhone Mail (12B440) In-Reply-To: <57055E23.40602@inqbus.de> X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: X-Mailman-Original-References: <57040A52.9020404@thomas-guettler.de> <5704A110.4030006@behnel.de> <6E439C3C-FC40-4CAA-827C-8ACDE3DC85F2@zopyx.com> <57051734.6020207@thomas-guettler.de> <57051C5F.1080808@chrisarndt.de> <570553C5.80101@sschwarzer.net> <57055E23.40602@inqbus.de> Xref: csiph.com de.comp.lang.python:4360 Hallo Volker & Co.! Danke Dir und anderen f=C3=BCr diesen und =C3=A4hnlich konstruktiven Beitr=C3= =A4ge! Deswegen gibt es diese und =C3=A4hnliche Listen, damit man weitergibt= und/oder weiterkommt, und nicht, um dumpfbackiges Ged=C3=B6ns abzusondern u= nd anderen permanent Platzverweise und Maulk=C3=B6rbe zu erteilen. Gru=C3=9F, Dinu Am 06.04.2016 um 21:06 schrieb Dr. Volker Jaenisch : >=20 > Servus Thomas! >=20 >> Am 06.04.2016 um 20:21 schrieb Stefan Schwarzer: >> - Bevor man =C3=BCber Syntax-Erweiterungen nachdenkt, sollte man >> meines Erachtens erst mal schauen, ob man nicht eine >> M=C3=B6glichkeit findet, diese Schleifen-Sonderf=C3=A4lle mit einer >> jetzt schon funktionierenden Python-API zu behandeln. Es >> kann nat=C3=BCrlich sein, dass das schwerf=C3=A4llig wird, aber ich >> finde es besser, das auszuprobieren als es nur zu >> vermuten. :-) > Wie wahr und zutreffend Stefan! > Ich mache seit mehr als 20 Jahren Performance-Optimierung von Code in > Python. >=20 > Das genannte Beispiel >=20 > connection =3D get_db_connection() > for item in my_iterator: > push_item_to_db(item, connection) >=20 > und der Vorschlag wegen der Rechenzeit f=C3=BCr das teure =C3=96ffnen der > DB-Connection die Syntax des Interpreters =C3=A4ndern zu wollen > ist absurd. Es mag ja wenige akademische Spezialf=C3=A4lle geben in denen s= o > etwas evtl. weniger Rechenzeit ben=C3=B6tigt. In "real world" Szenarien > hat man sowieso nicht eine DB-Verbindung sondern einen Pool von > DB-Verbindungen, da wirkliche Performance heutzutage nur mit > Parallelisierung erreichbar ist. > Es ist also viel interessanter eine Schleife und deren Inhalte auf > mehrere CPUs zu verteilen als Corner-Cases am Anfang der Schleife zu > optimieren. >=20 > Ansonsten ist dies wieder einer der F=C3=A4lle in denen vergessen wird, da= ss > man viele solcher Probleme > durch das gesonderte Behandeln des ersten oder des letzten > Schleifen-Elements einfach in den Griff bekommt. >=20 > try: > first_item =3D my_iterator.next() >=20 > connection =3D get_db_connection() > push_item_to_db(first_item, connection) >=20 > except StopIteration: > ->> Exit oder continue oder break >=20 > for item in my_iterator: > push_item_to_db(item, connection) >=20 > Sagte, da gerade jemand, dass dies uneleganter Code ist, den man mit der > neuen Syntax viel kompakter etc. hinschreiben k=C3=B6nnte? > Wenn es wirklich um Performance geht ist es nahezu unvermeidbar auch mal > h=C3=A4sslichen Code zu schreiben - oder Cython oder C zu verwenden was > letztlich > nur bedeutet dem Schreiben von h=C3=A4sslichem Code einen neuen Namen zu > verpassen. Das bedeutet aber im Umkehrschluss nicht, dass man den > h=C3=A4sslichen Code, > wie Du es Dir vorstellst mit Gewinn einfach im Interpreter verstecken > kann. Denn .. >=20 > .. Du schl=C3=A4gst mit >> - on-empty >> - pre-first (siehe oben) >> - on-break (wie bisher "else") > drei zus=C3=A4tzliche Exits zum For-Konstrukt vor. IMHO zeichnet sich eine= > gute Programmiersprache unter anderem durch Ihre Orthogonalit=C3=A4t und > Einfachheit aus. > Aus einfachen Konstrukten werden gr=C3=B6=C3=9Fere Konstrukte aggregiert. W= enn man > aber anf=C3=A4ngt die Konstrukte auf der untersten Ebene komplizierter zu > machen erzeugen > diese zus=C3=A4tzlichen Freiheitsgrade Probleme bei der Optimierung. Ein J= IT > wie PyPy kann Python-Schleifen prima optimieren, eben weil sie einfach > sind. Machen wir Python-Schleifen > komplizierter, wird die Optimierung komplizierter und damit weniger > effizient. Der Gewinn bei Deinen Corner-Cases wird durch die > wegfallenden Optimierungsm=C3=B6glichkeiten sofort wieder aufgefressen. >=20 > Ein weiterer Denkansto=C3=9F: Bis heute werden numerische Bibliotheken in > Fortran77 gepflegt und viel Code in den Wissenschaften wird sogar noch > in F77 geschrieben obwohl Fortran uralt ist. > Der Grund daf=C3=BCr ist unter anderem, dass Fortran77 so simpel ist. Dahe= r > kann Fortran mit optimierenden F2C-Compilern sehr stark optimiert und > parallelisiert werden. Auch kann der Code durch automatisierte Verfahren > auf seine Richtigkeit getestet werden. Die Einfachheit der Konstrukte > von F77 verhinderte es komplizierten Code =C3=BCberhaupt hinzuschreiben. > Daher war es m=C3=B6glich =C3=BCber Jahrzehnte hinweg den Code der numeris= chen > Bibliotheken nahezu fehlerfrei zu bekommen. >=20 > Beste Gr=C3=BC=C3=9Fe >=20 > Volker >=20 > --=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D > inqbus Scientific Computing Dr. Volker Jaenisch > Richard-Strauss-Stra=C3=9Fe 1 +49(08861) 690 474 0 > 86956 Schongau-West http://www.inqbus.de > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D >=20 >=20 > _______________________________________________ > python-de maillist - python-de@python.org > https://mail.python.org/mailman/listinfo/python-de