[PYTHON] Ich habe versucht, eval (a, b) für Fibonacci zu verwenden, aber es war nicht schnell

Ja. Es endet etwas früher als das auf der Referenzseite, aber ich bin mir nicht sicher, aber ich muss eine Notiz hinterlassen. Referenz http://d.hatena.ne.jp/sakurai_youhei/20130107/1357568535

op.py


#!/usr/bin/env python
# -*- coding:utf-8 -*-
#from __future__ import print_function
import sys
import io
import re
import math

####Vorbereitung der Speicherauslastung und Betriebszeitprüfung
from guppy import hpy
import time
start = time.clock()
h = hpy()
####Bis hierher
#Es scheint gepostet zu sein
def fib(n):
    if n < 2: return n
    return fib(n-2) + fib(n-1)

#print fib(50)

def fib2(n):
    a,b=0,1
    return reduce(lambda x,y: x+[x[-1]+x[-2],], xrange(n-1), [a,b])[n]
print fib2(10000)

def fib3(n):
    a,b=0,1
    for i in range(n):
        a,b=b,eval('a+b')
    print a

#print fib3(500000)

#def fib4(n):
#    n+=3
#    f=[(seq.append(seq[i-2] + seq[i-1]), seq[i-2])[1] for seq in [[0, 1]] #for
#            i in range(2, n)]
#    print f[-1]
#print fib4(500000)

def fib5(n):
    a,b=0,1
    for i in range(n):
        a,b=b,a+b
    print a

#print fib5(500000)


#if __name__ == 'main':
#    print(fib(100))


####Speichernutzung und Betriebszeitausgabe
end = time.clock()
print (h.heap())
print (end - start)

fib (n) und fib2 (n) sind die ersten und fib3 (n) ist das Muster, das ich mit eval ausprobiert habe. Ich bin mir nicht sicher, da die Methode zum Extrahieren des Berechnungsergebnisses bei Verwendung von eval unterschiedlich ist. Ich weiß es nicht.

So etwas wie ein Vergleichsergebnis

Funktion Verarbeitungszeit F(3)Der Wert des
fib() 0.008658 Sekunden 2
fib2() 0.011694 Sekunden 2
fib3() 0.011055 Sekunden 2
Funktion Verarbeitungszeit F(10)Der Wert des
fib() 0.010526 Sekunden 55
fib2() 0.008879 Sekunden 55
fib3() 0.011909 Sekunden 55
Funktion Verarbeitungszeit F(35)Der Wert des
fib() 5.782845 Sekunden 9227465
fib2() 0.011936 Sekunden 9227465
fib3() 0.010569 Sekunden 9227465

Muster 1 scheint viel Zeit in Anspruch zu nehmen. .. .. Das war's. Es macht keinen Sinn, das Berechnungsergebnis zu schreiben, und da es eine große Zahl wie ein Narr sein wird, werde ich danach nur die Verarbeitungsgeschwindigkeit aufschreiben.

Funktion Verarbeitungszeit F(50)Der Wert des
fib() 7997.16923 Sekunden - -
fib2() 0.009155 Sekunden - -
fib3() 0.010594 Sekunden - -

Sie müssen Muster 1 nicht mehr ausprobieren. .. .. ..

Funktion Verarbeitungszeit F(10000)Der Wert des
fib2() 0.376591 Sekunden - -
fib3() 0.111379 Sekunden - -
fib5() 0.012429 Sekunden - -
Funktion Verarbeitungszeit F(100000)Der Wert des
fib2() 215.1977 92 Sekunden - -
fib3() 1.23247 Sekunden - -
fib5() 0.176561 Sekunden - -
Funktion Verarbeitungszeit F(500000)Der Wert des
fib3() 10.0645 15 Sekunden - -
fib5() 3.950023 Sekunden - -

Bonus ・ Wenn n = 777777 fib5() Verarbeitungsgeschwindigkeit 9.299923

Es scheint, dass das Format und die Vergleichsmethode möglicherweise nicht fair sind. Wenn ich mich daran erinnern muss, wie man einige Muster schreibt und mir Gedanken über die Verarbeitungsgeschwindigkeit macht, frage ich mich, welches Muster schneller ist.

13/12/15 Ja. Die gemessenen Werte für `` `a, b = b, a + b```, die ich in den Kommentaren erhalten habe, wurden der Tabelle in der Spalte von fib5 () hinzugefügt.

Recommended Posts

Ich habe versucht, eval (a, b) für Fibonacci zu verwenden, aber es war nicht schnell
Ich habe versucht, Tensorboard zu verwenden, ein Visualisierungstool für maschinelles Lernen
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Ich habe versucht, mit einer Schildkröte eine Linie zu ziehen
Ich habe versucht, pipenv zu verwenden, machen Sie sich also eine Notiz
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe versucht, Java mit Termux unter Verwendung von Termux Arch zu verwenden, aber es hat nicht funktioniert
Als ich versuchte, eine VPC mit AWS CDK zu erstellen, konnte ich es aber nicht schaffen
Ich habe versucht, Pythonect, eine Programmiersprache für den Datenfluss, zu verwenden.
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Ich habe versucht, Firebase für Djangos Cache-Server zu verwenden
Ich dachte, es wäre langsam, die for-Anweisung in NumPy zu verwenden, aber das war nicht der Fall.
Ich habe versucht, die Datenbank (sqlite3) mit kivy zu verwenden
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht, ein Projekt mit Python on Docker mit PyCharm zu erstellen, aber es hat mit Docker Compose funktioniert
Ich habe versucht, ein Beispielmodell von Pytorch mit TorchServe zu hosten
Ich habe mit Github-Aktionen ein Rad für Windows erstellt
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Ich habe versucht, mit Python eine Pseudofraktalfigur zu zeichnen
Ich habe versucht, Daten aus einer Datei mit Node.js zu lesen.
Ich habe einen einfachen RPA für die Anmeldung mit Selen ausprobiert
Ich habe versucht, Python (3) anstelle eines Funktionsrechners zu verwenden
AI Gaming Ich habe es zum ersten Mal versucht
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
[Git] Ich habe versucht, anhand eines konkreten Beispiels zu verstehen, wie man Git Stash verwendet.
Ich habe versucht, ein Deep-Learning-Modell von TensorFlow mit TensorFlow Serving zu hosten
Verschiedene Hinweise zur Verwendung von Python für Projekte
Ich habe versucht, einen Bot für die Ankündigung eines Wiire-Ereignisses zu erstellen
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe mit PyQt einen einfachen Texteditor erstellt
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
Ich möchte eine Datei, die keine bestimmte Zeichenfolge ist, als logrotate Ziel angeben, aber ist es unmöglich?
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung