Convertire codice Python in C++

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
TommyB1992
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 852
Iscrizione: domenica 7 luglio 2013, 15:55
Desktop: GNU/Linux
Distribuzione: Ubuntu 22.04.2 LTS
Sesso: Maschile

Convertire codice Python in C++

Messaggio da TommyB1992 »

Ho la necessità di convertire del codice per renderlo più performante e ne sto approfittando per studiare su www.learncpp.com anche perchè era da un pò che volevo aggiungere nel mio bagaglio di skill il c++.

Ma sono inceppato in un punto nella conversione del software.

In python una cosa simile:

Codice: Seleziona tutto

class Info:
    def __init__(self, actions, key):
        self.key = key

        self.regret = {}
        self.actions = []

        for (action, size) in actions:
            self.actions.append((action, size))
            self.regret[action, size] = 0

        self.num_acts = len(self.actions)
 
# Inizializzazione d'esempio
i1 = Info([('left', 100), ('right', 0), ('up', 40)], 'first')
i2 = Info([('down', 20), ('down', 50)], 'second')
Ovviamente il problema maggiore (se non unico) sta nella chiave del dizionario self.regret. Contando che è un oggetto che viene inizializzato parecchie volte (un paio di milione di volte), anche in ottica di performance, ho pensato a questo:

1 creare un enum:

Codice: Seleziona tutto

enum Actions {
  LEFT = 100,
  RIGHT = 0,
  UP = 40,
  DOWN_20 = 20,
  DOWN_50 = 50
}
Passare come argomento della classe qualcosa in questo modo:

Codice: Seleziona tutto

    Actions act[] = {LEFT, RIGHT, UP};
    Info info(*act, "first");
Ciclare il tutto e gestire l'array self.regret e self.actions con std::vector.
Secondo voi è ok o ci sono soluzioni molto più ottimali/semplici?

Grazie
RTK901
Prode Principiante
Messaggi: 86
Iscrizione: sabato 17 settembre 2022, 12:23
Desktop: Lxqt
Distribuzione: Lubuntu18.10
Sesso: Maschile

Re: Convertire codice Python in C++

Messaggio da RTK901 »

dico forse, forse dovresti provare con Cython:

Codice: Seleziona tutto

https://cython.org/
Qui spiega in inglese come partire da principiante.
Tratta del C ma potrebbe funzionare anche con C++

Codice: Seleziona tutto

https://www.peterbaumgartner.com/blog/intro-to-just-enough-cython-to-be-useful/

Ciao
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti