Gehen Sie zur Sprache, um Teil 8 zu sehen und sich daran zu erinnern. Rufen Sie die GO-Sprache von Python aus auf

Dieses Mal werden wir die GO-Sprache von Python aufrufen, um die Schwäche von Python zu beschleunigen.

Wenn wir über Python sprechen, ist es kein "Compiler". Es ging in Flammen auf.

Weder Java noch "Compiler" oder C # sind Compiler.

Das Konvertieren und Ausführen in eine Zwischensprache ist langsam und die erste Batterie ist schnell leer.

** GO ist ein echter Compiler. ** ** **

** Aus der Sicht von Python kann es möglich sein, den Berechnungsteil zu beschleunigen. ** ** **

Ich habe auf [Fibonatch-Nummer] verwiesen (https://qiita.com/tomobk0025/items/3cc39ac6a7fbbdb0bde6).

――Ein Kaninchenpaar bringt ab zwei Monaten nach der Geburt jeden Monat ein Kaninchenpaar zur Welt.

fib_go.py


from ctypes import *
lib = cdll.LoadLibrary("./fib.so")
for i in range(40):
    print ("fib %d  %d" %(i, lib.fib(i)))

Rufen Sie einfach die folgende Funktion in lib.fib (i) auf.

fib.go


package main

import "C"
//export fib
func fib(n int) int {
    if n <= 1 { return n }
    return fib(n-1) + fib(n-2)
}

func main() {}

** Kompilieren Sie die in Go geschriebene Funktion. ** ** **

> go build -o fib.so -buildmode=c-shared fib.go

Lauf

>python fib_go.py
fib 0  0
fib 1  1  
fib 2  1  
fib 3  2  
fib 4  3  
fib 5  5  
fib 6  8  
fib 7  13 
fib 8  21 
fib 9  34 
fib 10  55
fib 11  89
fib 12  144
fib 13  233
fib 14  377
fib 15  610
fib 16  987
fib 17  1597
fib 18  2584
fib 19  4181
fib 20  6765
fib 21  10946
fib 22  17711
fib 23  28657
fib 24  46368
fib 25  75025
fib 26  121393
fib 27  196418
fib 28  317811
fib 29  514229
fib 30  832040
fib 31  1346269
fib 32  2178309
fib 33  3524578
fib 34  5702887
fib 35  9227465
fib 36  14930352
fib 37  24157817
fib 38  39088169
fib 39  63245986
fib 40  102334155

10 mal schneller.

Recommended Posts

Gehen Sie zur Sprache, um Teil 8 zu sehen und sich daran zu erinnern. Rufen Sie die GO-Sprache von Python aus auf
C-Sprache zum Anzeigen und Erinnern Teil 2 Rufen Sie die C-Sprache aus der Python-Zeichenfolge (Argument) auf
C-Sprache zum Sehen und Erinnern Teil 1 Rufen Sie die C-Sprache aus Python auf (Hallo Welt)
C-Sprache zum Anzeigen und Erinnern Teil 4 Rufen Sie die C-Sprache von Python (Argument) double auf
C-Sprache zum Anzeigen und Erinnern Teil 5 Rufen Sie die C-Sprache aus dem Python-Array (Argument) auf
C-Sprache zum Sehen und Erinnern Teil 3 Rufen Sie die C-Sprache aus Python auf (Argument) c = a + b
Gehen Sie in die Sprache, um Teil 7 C in der Sprache GO zu sehen und sich daran zu erinnern
Rufen Sie Matlab von Python zur Optimierung auf
Rufen Sie C-Sprachfunktionen von Python auf, um mehrdimensionale Arrays auszutauschen
Python, um von einer anderen Sprache zu wechseln
Rufen Sie die c-Sprache von Python aus auf (python.h)
[Es ist noch nicht zu spät, Python ab 2020 zu lernen] Teil 3 Python Language Basic (1)
Portieren und Ändern des Doublet-Solvers von Python2 auf Python3.
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Liste des zu verschiebenden und zu merkenden Python-Codes
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen von Klassen Teil ➀
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen von Klassen Teil ➁
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
Die Geschichte der Portierung von Code von C nach Go (und zur Sprachspezifikation)
Rufen Sie CPLEX von Python aus auf (DO cplex)
[Einführung in cx_Oracle] (Teil 6) Zuordnung von DB- und Python-Datentypen
Post von Python nach Slack
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen einer einfachen Funktion Teil ➀
Herstellen einer Verbindung zu verschiedenen DBs über Python (PEP 249) und SQL Alchemy
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Um zwischen Standard-Python, Numpy, Pandas hin und her zu gehen ①
Rufen Sie Rust von Python an, um schneller zu werden! PyO3-Tutorial: Umschließen einer einfachen Funktion Teil ➁
Stellen Sie von Python aus eine Verbindung zu SQLite her
Wie man Python oder Julia von Ruby aus aufruft (experimentelle Implementierung)
Portiert von der R-Sprache von "Sazae-sans Janken Data Analysis" nach Python
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part1-
[First Ripple] [I am] Rufe JavaScript (Node.js) von Python auf und verarbeite Ripple
[Python] Drücken Sie Keras von TensorFlow und TensorFlow von c ++, um die Ausführung zu beschleunigen.
Installieren Sie mecab auf dem gemeinsam genutzten Sakura-Server und rufen Sie es von Python aus auf
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part2-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part4-
Rufen Sie dlm von Python aus auf, um ein zeitvariables Koeffizientenregressionsmodell auszuführen
[Python + Heroku] Vom Zustand ohne Python zur Anzeige von etwas mit Heroku (Teil 2)
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part3-
Rufen Sie mit ctypes Ihre eigene gemeinsam genutzte Bibliothek in C-Sprache von Python aus auf
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Rufen Sie C von Python mit DragonFFI auf
Python 3.6 unter Windows ... und zu Xamarin.
Perl-Objekt und Python-Klasse Teil 2.
[Einführung in Python3 Tag 1] Programmierung und Python
Python, Ausbeute, Rückkehr und manchmal Ausbeute von
Einführung in Python Hands On Teil 1
Post von Python auf Facebook Timeline
[Lambda] [Python] Von Lambda auf Twitter posten!
Rufen Sie popcount von Ruby / Python / C # auf
Lesen und verwenden Sie Python-Dateien aus Python
Einführung in Protobuf-c (C-Sprache ⇔ Python)