[PYTHON] Wie man die Computersprache langsam benutzt

Es gibt eine Möglichkeit, es spät in jeder Sprache zu verwenden. Ich habe die Methode verwendet, es spät zu verwenden Es ist leicht zu sagen: "Die Sprache XX, die Bibliothek ist langsam." Hier sind einige Dinge, die Anfänger tun.

-Um ein Listenelement hinzuzufügen, wird das Ergebnis der Verkettung mit dem Operator + mit der Liste der Liste zugewiesen.

ex.py


a = []
for i in range(1000):
    a = a + [i]

・ Trotz der Tatsache, dass es eine effektive Methode gibt, um die Liste zur Liste hinzuzufügen Es wird wiederholt, einzelne Elemente anzuhängen. (Im Fall von Python gibt es eine Extend-Methode.)

・ Wenn die Datenstruktur nicht ordnungsgemäß verwendet wird Listen werden für eine ausreichende Verarbeitung in Wörterbüchern und Sätzen verwendet.   Es ist O (N), um sicherzustellen, dass die Liste Werte enthält  if x in listData: Ob es im Schlüssel des Wörterbuchs enthalten ist, ist O (1)  if dictData.has_key(x): Ob es im Set enthalten ist, ist O (1)  if x in setData:

・ Ohne zu bemerken, dass es mithilfe der in der Standardbibliothek enthaltenen Funktionen effektiv ausgeführt werden kann. Ich mache eine langsame Implementierung mit meiner eigenen Bibliothek.

Suchen Sie in einer Bibliothek, die ein Datenformat bereitstellt, das als Satz bezeichnet wird, die Zusammenführung, den gemeinsamen Teil und den Unterschied des Satzes. Eine Methode wird bereitgestellt. Für Python-Set-Typ s.union(t) s.intersection(t) s.difference(t)

Mit ihnen erhalten Sie höchstwahrscheinlich ein übersichtliches Programm, das schneller als Ihre eigene Bibliothek ausgeführt wird. Ich werde.

Beispiel: In C ++ können Sie als Referenz übergeben, aber Sie übergeben als Wert. Erstellen Sie eine Kopie eines unnötigen Objekts. (Ein unzureichender Textlehrplan reicht aus, um in C ++ nur das Übergeben von Werten und das Übergeben von Zeigern zu lehren.)

・ Trotz der Tatsache, dass die Bibliothek so konzipiert ist, dass Matrixberechnungen effektiv durchgeführt werden In einer solchen Bibliothek werden Matrixoperationen in einer Schleife von for-Anweisungen verarbeitet. (MATLAB, Python Numpy usw.)

ex2.py


# -*- coding: utf-8 -*-
def func1():
    b=['d', 'e', 'f', 'g', 'h', 'i', 'j',  'k', 'l',  'm', 'n', 'o', 'p', 'q', 'r', 's']
    for i in range(10000):
        a=['a', 'b', 'c']
        
        for x in b:
            a= a+[x]
        
#        print a
def func2():
    b=['d', 'e', 'f', 'g', 'h', 'i', 'j',  'k', 'l',  'm', 'n', 'o', 'p', 'q', 'r', 's']
    for i in range(10000):
        a=['a', 'b', 'c']
        
        for x in b:
            a.append(x)
        
#        print a
def func3():
    b=['d', 'e', 'f', 'g', 'h', 'i', 'j',  'k', 'l',  'm', 'n', 'o', 'p', 'q', 'r', 's']
    for i in range(10000):
        a=['a', 'b', 'c']
        a = a+b
        
#        print a
def func4():
    b=['d', 'e', 'f', 'g', 'h', 'i', 'j',  'k', 'l',  'm', 'n', 'o', 'p', 'q', 'r', 's']
    for i in range(10000):
        a=['a', 'b', 'c']
        
        a.extend(b)
        
 #       print a
        
if __name__=='__main__':
    func1()
    func2()
    func3()
    func4()

Im Fall von Python können Sie ein Profil erstellen, ohne das Skript neu zu schreiben, indem Sie [Ausführen] [Profil] in der integrierten Spyder-Umgebung verwenden.

Zusammenfassung: Verwenden Sie die Methoden zum Anhängen und Erweitern, um Daten zur Liste hinzuzufügen. Es ist keine gute Idee, die Zuweisung mit dem Operator + zu wiederholen. Verwenden Sie unterschiedliche Datenstrukturen wie Listen, Wörterbücher und Mengen. Verwenden Sie die Datenstrukturmethoden in Standardbibliotheken und vermeiden Sie es, selbst gleichwertige Funktionen zu erstellen. Machen Sie keine unnötigen Kopien der Daten. Nicht für for-Schleifen verwenden, die ohne for-Schleifen in Array-Operationen ausgeführt werden können.

Nachtrag: Wenn Sie mehr über diese Inhalte erfahren möchten, "High Performance Python" Du solltest lesen. Zum Zeitpunkt des Schreibens dieses Artikels war diese japanische Übersetzung noch nicht veröffentlicht worden.

Referenzinformationen Geschwindigkeitsvergleich zum Hinzufügen von Python-Listen (Anhängen, Einschlussnotation usw.) http://nonbiri-tereka.hatenablog.com/entry/2014/10/20/110304

Recommended Posts

Langsame Verwendung der Computersprache 2
Wie man die Computersprache langsam benutzt
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Wie benutzt man Seaboan?
Verwendung von Image-Match
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von pytest_report_header
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Wie man Python-Kabusapi benutzt
Verwendung von return
Wie man Imutils benutzt
Verwendung von Qt Designer
Verwendung der Suche sortiert
[gensim] Verwendung von Doc2Vec
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
[Python] Verwendung von Liste 1
Verwendung von FastAPI ③ OpenAPI
Verwendung von IPython Notebook
Wie man Pandas Rolling benutzt
[Hinweis] Verwendung von virtualenv
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
So bedienen Sie GeoIp2 von Django
[Python] Verwendung von input ()
Wie benutzt man den Dekorateur?
[Einführung] Verwendung von open3d
Wie benutzt man Python Lambda?
So verwenden Sie Jupyter Notebook
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
So verwenden Sie Google Colaboratory
Verwendung von Python-Bytes
Verwendung von Python Kivy ~ ~ Grundlagen der Kv-Sprache ~
Verwendung von cron (persönliches Memo)
Python: So verwenden Sie Async mit
Verwendung der Zip-Funktion
Verwendung des optparse-Moduls
Wie man SWIG von waf benutzt
Zusammenfassung der Verwendung von pandas.DataFrame.loc