Mi sapete dire un compilatore gratuito per C++ decente?

marcobrasich

¡Saludos a todos!
Registrato
8/1/01
Messaggi
6.213
Punti reazioni
424
Sto scrivendo un programmino in Python per gestire una banca dati di borsa in ascii, ma sembra di una lentezza esasperante...

Lo script non l'ho ancora finito ma da alcuni piccoli test mi pare che mi affossa le prestazioni del mio PC ( intel i7 a 4.0 Ghz).

Temo che dovro' prima o poi convertirlo in un codice più efficiente... ...tipo C++.


Ma non posseggo un compilatore per tale linguaggio.
Cerco, ovviamente, uno gratuito.

Avete uno da consigliare???

Vedo che Microsoft parla di versione gratuita per il suo Visual Studio --> Link, ma non ho capito se è gratuito per solo pochi giorni di prova o se è gratuito ma è fortemente limitato... ...sapete qualcosa su ciò???

Grazie.
 
Sto scrivendo un programmino in Python per gestire una banca dati di borsa in ascii, ma sembra di una lentezza esasperante...

Lo script non l'ho ancora finito ma da alcuni piccoli test mi pare che mi affossa le prestazioni del mio PC ( intel i7 a 4.0 Ghz).

Temo che dovro' prima o poi convertirlo in un codice più efficiente... ...tipo C++.


Ma non posseggo un compilatore per tale linguaggio.
Cerco, ovviamente, uno gratuito.

Avete uno da consigliare???

Vedo che Microsoft parla di versione gratuita per il suo Visual Studio --> Link, ma non ho capito se è gratuito per solo pochi giorni di prova o se è gratuito ma è fortemente limitato... ...sapete qualcosa su ciò???

Grazie.

Per le tue esigenze dovrebbe essere sufficiente la versione gratuita di Visual Studio che include IDE, strumenti di compilazione e debug.

In alternativa Eclipse che è open-source.

Qui qualche indicazione, comunque scaricarlo e provarlo non guasta, almeno per verificare se ci si trova a proprio agio. :-)

(Ma solo a me il Fol sembra lento come una lumaca a caricare?:mmmm:)

Prezzi e opzioni di acquisto | Visual Studio

Eclipse Downloads | The Eclipse Foundation
 
Ultima modifica:
ciao, probabilmente lo hai già fatto ma hai provato ad usare qualche libreria in python più performante tipo numpy ?
Durante queste settimane l'ho utilizzato per fare qualche script con dati di borsa e ho visto che con dataset di circa
800000 righe se la cava ancora bene.
 
ciao, probabilmente lo hai già fatto ma hai provato ad usare qualche libreria in python più performante tipo numpy ?
Durante queste settimane l'ho utilizzato per fare qualche script con dati di borsa e ho visto che con dataset di circa
800000 righe se la cava ancora bene.

Capisco poco di programmazione, non sto attento alle istruzioni che sono più performanti per il semplice fatto che non so cosa sia meglio.

Tra parentesi, il codice che ho scritto (essendo la prima volta che uso python) è un pot-pourri di codice copiato su stackoverflow.


Leggo un po' di roba sulla libreria che consigli.
grazie.
 
Per le tue esigenze dovrebbe essere sufficiente la versione gratuita di Visual Studio che include IDE, strumenti di compilazione e debug.

In alternativa Eclipse che è open-source.

Qui qualche indicazione, comunque scaricarlo e provarlo non guasta, almeno per verificare se ci si trova a proprio agio. :-)

(Ma solo a me il Fol sembra lento come una lumaca a caricare?:mmmm:)

Prezzi e opzioni di acquisto | Visual Studio

Eclipse Downloads | The Eclipse Foundation

Grazie FogOnLine
 
Se cerchi eventualmente qualcosa di piu' snello e meno impegnativo (anche se ovviamente meno performante) rispetto a Visual Studio, prova a vedere questo:
Dev-C++
 
ciao, probabilmente lo hai già fatto ma hai provato ad usare qualche libreria in python più performante tipo numpy ?
Durante queste settimane l'ho utilizzato per fare qualche script con dati di borsa e ho visto che con dataset di circa
800000 righe se la cava ancora bene.

Hai da linkare qualche pagina di codice con numpy?

Sarei interessato a leggere file txt e memorizzarlo in un'array dinamico (cioè le cui dimensioni si modificano automaticamente in base alla grandezza dello storico intraday letto contenuto nel file txt)???
 
(Ma solo a me il Fol sembra lento come una lumaca a caricare?:mmmm:)

confermo
a volte impiega secondi per caricare la pagina successiva, questo dopo che hanno fatto lo stop di 4 giorni con manutenzione a Pasqua,
uso firefox
 
vai pure di visual studio...OK!OK!OK!
però devo dire che non mi è chiaro come fai a valutare lento python... :D

d'altronde il tempo è relativo... un minuto per estrarre da Yahoo Finance tutti i dati Daily (dall'inizio dei tempi) dei titoli del NASDAQ 100 può sembrare tanto o poco a seconda dell'interlocutore...
alcuni usano python per l'HFT... quindi a naso direi che non dovrebbe essere una lumaca...
io ho notato che rallenta molto le performance quando semplicemente si fanno dei 'print'...
o se si richiamano programmi esterni...
se invece rimane nel suo lo trovo velocissimo...
per cui sarebbe consigliabile limitare le 'uscite' unicamente ad inizio o fine programma... ed eliminare i 'print' quando non servono...

ci puoi fare un esempio di quando lo trovi lento?
puoi mettere in chiaro il codice affinché lo testiamo sui nostri PC quanto ci mette?
chiaramente solo il pezzettino che a tuo parere impiega un sacco di tempo...
e sempreché non siano cose segretissime... :D:D:D

Ciauuuuu
 
vai pure di visual studio...OK!OK!OK!
però devo dire che non mi è chiaro come fai a valutare lento python... :D

d'altronde il tempo è relativo... un minuto per estrarre da Yahoo Finance tutti i dati Daily (dall'inizio dei tempi) dei titoli del NASDAQ 100 può sembrare tanto o poco a seconda dell'interlocutore...
alcuni usano python per l'HFT... quindi a naso direi che non dovrebbe essere una lumaca...
io ho notato che rallenta molto le performance quando semplicemente si fanno dei 'print'...
o se si richiamano programmi esterni...
se invece rimane nel suo lo trovo velocissimo...
per cui sarebbe consigliabile limitare le 'uscite' unicamente ad inizio o fine programma... ed eliminare i 'print' quando non servono...

ci puoi fare un esempio di quando lo trovi lento?
puoi mettere in chiaro il codice affinché lo testiamo sui nostri PC quanto ci mette?
chiaramente solo il pezzettino che a tuo parere impiega un sacco di tempo...
e sempreché non siano cose segretissime... :D:D:D

Ciauuuuu

Allora, come prima cosa, devo trasformare la banca dati metastock in Ascii con relativa rinomina di tutti i file (ascii),
questo passaggio l'avevo implementato con uno script in DOS tramite un file batch -> ed impiegavo circa 3 minuti con questo sistema (sono migliaia di file).




Poi, siccome mi serviva una cosa più precisa nel rinominare i nomi dei file ascii ho rifatto lo stesso script in versione python... ...a 5 minuti ho premuto il Ctrl+C ed ho bloccato lo script in python ed ho visto che era in alto mare... ...lento come la fame. Forse ho pensato che era colpa delle continue chiamate a due programmi da riga di comando.



Adesso però, sto facendo lo script in python che aggiorna la banca dati ascii leggendo gli aggiornamenti e modifiche fatte sulla banca dati metastock e qui, mi sembra, che risulta ancora lentissimo python.

Per ognuno dei migliaia di file, la banca metastock aggiunge gli aggiornamenti relativi all'ultima giornata, ma cancella le righe più vecchie, questo perché la banca metastock non cresce all'infinito ma è fatta x rimane stabile come dimensioni (anche perché metastock ha come limite intrinseco 65000 righe di dati; che per l'intraday ad 1 minuto corrispondono a soli 5 mesi di storico).

La mia banca ascii non cancellerà nessuna vecchia riga e lo storico intraday crescerà sempre (comunque massimo 1.000.000 di righe x Multicharts e Amibroker ultime versioni).






Quindi, python dovrà controllare riga per riga tutti i migliaia di file delle due banche dati. E la cosa sarebbe da fare giornalmente....




Non ho terminato lo script, ma sono a buon punto con le funzioni che mi servono per implementare il programma principale.
Temo che l'aggiornamento della banca dati definitiva gliela farò fare settimanalmente. Il sabato o la domenica lascerò il PC acceso di notte e gli farò fare tutto il lavoro.
Purtroppo, questa fase di aggiornamento non si può fare in DOS.

Se volete, a fine lavoro, vi farò vedere il tutto... ...è capirete che è uno script "arlecchino" fatta con tanti pezzi di codici copiati dalla rete... :D:D:D:D
Non potrà mai essere uno script super efficente! :D


Ovviamente, penso che primo o poi, se python sarà effettivamente lento, passerò a C++ sperando di ottenere vistosi miglioramenti.... ...ma, per questo, dovrò prima leggermi un libro che mi rinfreschi C++ nella memoria, visto che ormai son 15 anni dal mio primo ed ultimo testo letto sull'argomento.
 
Ultima modifica:
mah... non mi intendo moltissimo di python ma rinominare semplicemente dei file presenti nelle directory/folder dovrebbe durare pochi secondi se non meno...
a patto di utilizzare le librerie os o pathlib di python (magari ce ne saranno pure altre)...
se invece fai dei richiami a comandi esterni allora non ci siamo....:no:
quindi non darei la colpa al povero pitone... :D

prima ho aggiornato i titoli del NASDAQ 100 e ci ha messo una 30 di secondi per 'appendere' i giorni che mi servivano... ma questo perché la chiamata a Yahoo è appositamente rallentata da Yahoo stessa... avessi preso i dati da un'altra directory probabilmente lo faceva in tempo zero (x cento titoli)...

secondo me puoi fare il tutto con poche righe di codice e con tempistiche di esecuzione accettabili anche senza andare su c++...

a meno che mi sfugga qualche particolare...;)

PS
in realtà non ho capito perché devi controllare riga x riga migliaia di file...
se devi aggiungere i dati: o li metti sopra... o li metti sotto...

PS 2
anche io copio e incollo...
quindi non preoccuparti del potenziale Frankenstein...
 
mah... non mi intendo moltissimo di python ma rinominare semplicemente dei file presenti nelle directory/folder dovrebbe durare pochi secondi se non meno...
a patto di utilizzare le librerie os o pathlib di python (magari ce ne saranno pure altre)...
se invece fai dei richiami a comandi esterni allora non ci siamo....:no:
quindi non darei la colpa al povero pitone... :D

prima ho aggiornato i titoli del NASDAQ 100 e ci ha messo una 30 di secondi per 'appendere' i giorni che mi servivano... ma questo perché la chiamata a Yahoo è appositamente rallentata da Yahoo stessa... avessi preso i dati da un'altra directory probabilmente lo faceva in tempo zero (x cento titoli)...

secondo me puoi fare il tutto con poche righe di codice e con tempistiche di esecuzione accettabili anche senza andare su c++...

a meno che mi sfugga qualche particolare...;)

PS
in realtà non ho capito perché devi controllare riga x riga migliaia di file...
se devi aggiungere i dati: o li metti sopra... o li metti sotto...

PS 2
anche io copio e incollo...
quindi non preoccuparti del potenziale Frankenstein...


No il problema conversione e rinomina l'ho aggiustata bene...
..faccio scrivere il file batch al pytone e poi, una volta scritto, glielo faccio lanciare... ...e dos fa tutto in 3 minuti... ...pace ed amen!

Il problema che l'aggiornamento della banca dati metastock non è un semplice append di nuovi dati...
...ma come dicevo c'è:

1) un resize/taglio sui record più vecchi

2) una riscrittura di alcune righe vecchie che contenevano errori o dati non effettivi

3) un aggiustamento di tutte le righe (di un titolo) se c'è un roll-over per i "perpetual"o altra cosa simile

4) l'apertura di un nuovo storico e il relativo spostamento del vecchio storico nel "parcheggio dei vecchi titoli", ad esempio dei contratti dei singoli futures

5) eliminazione di titoli non più interessanti o non più in vendita (titoli di stato, etc)

6) ovviamente poi c'è anche l'append dell'aggiornamento



Se era da fare solo l'append avevo già finito da tempo ed il tutto avrebbe impiegato poco tempo...




...vabbè, io ci sto tentando... ...se ci riesco va bene... ...altrimenti pace ed amen!
 
Ultima modifica:
le operazioni che hai elencato sono normalmente quelle che esegue il programma di aggiornamento di un provider di dati...
dopo l'esecuzione rilascia anche un file di log con le indicazioni sulle rinominazioni, cancellazioni, fattori di rettifica utilizzati, etc etc...
normalmente crea anche i file perpetui per i futures...
il tuo provider non lo fa? mi pare strano... :confused:

cmq se metti un codice che ti pare lento magari ti possiamo aiutare...

PS x la tua domanda sulla vettorizzazione di qualche post fa...
I file normalmente si leggono con pandas...
pandas è come avere di fronte un enorme foglio excel...
tutto ciò che leggi con pandas diventa matriciale...
 
le operazioni che hai elencato sono normalmente quelle che esegue il programma di aggiornamento di un provider di dati...
dopo l'esecuzione rilascia anche un file di log con le indicazioni sulle rinominazioni, cancellazioni, fattori di rettifica utilizzati, etc etc...
normalmente crea anche i file perpetui per i futures...
il tuo provider non lo fa? mi pare strano... :confused:

cmq se metti un codice che ti pare lento magari ti possiamo aiutare...

PS x la tua domanda sulla vettorizzazione di qualche post fa...
I file normalmente si leggono con pandas...
pandas è come avere di fronte un enorme foglio excel...
tutto ciò che leggi con pandas diventa matriciale...


Ciao Alvin.


Script aggiustato...
...sbagliavo io!

Era troppo lento per essere una cosa normale.


Usavo il metodo .readlines() che carica tutto il file per leggere una sola riga invece di usare .readline() .

In pratica per tutti i 2000 - 3000 file che leggevo riga per riga... ..ad ogni riga che leggevo, ricaricavo l'intero file.

Adesso carico il file in una lista di righe e poi non lo carico più perché mi vado a riferire agli elementi della lista.

Adesso in un paio di secondi me la cavo... ..e se non ci sono grosse cose da aggiustare riesco in 1 secondo.
 
clang? g++?
Per quello che devi fare basta e avanza.
 
clang? g++?
Per quello che devi fare basta e avanza.


Stai parlando arabo....

...adesso che so fare due cose in python... :D:D:D

C'è la prima parte (la conversione da Metastock ad asciii) in DOS che è lenta (circa 3 minuti), ma lì non ci posso fare niente, perché in python sarebbe ancora più lenta.

La dipende dal programmino atem.exe che impiega un certo tempo a processare i file metastock... sarebbe bello avere un programma che faccia tutto in soli pochi secondi!
 
Stai parlando arabo....

...adesso che so fare due cose in python... :D:D:D

C'è la prima parte (la conversione da Metastock ad asciii) in DOS che è lenta (circa 3 minuti), ma lì non ci posso fare niente, perché in python sarebbe ancora più lenta.

La dipende dal programmino atem.exe che impiega un certo tempo a processare i file metastock... sarebbe bello avere un programma che faccia tutto in soli pochi secondi!

ma in python non c'è pyms?
oppure ms2txt?
li hai provati?
sono su GitHub...

cmq son molto contento che hai risolto... OK!OK!OK!
se ci mostravi il codice probabilmente l'avremmo visto subito... :D forse...

x andare a prelevare l'ultima data di un file ASCII (che può essere utile per l'appendimento) utilizzo il seguente metodo:

with open(nome file, 'r') as fp:
lines=fp.readlines()
end=lines[-1].split(',')[0]

xò magari ce ne sono anche di più veloci e pythonici...
tu hai qualcosa di simile da suggerire?
thx in advance... :bow::bow::bow:

Ciauuuuu

PS
cmq 3 minuti secondo me è ottimo per la gestione di qualche migliaio di file... non so se conviene perdere tempo sui convertitori python...
 
Ultima modifica:
Stai parlando arabo....

...adesso che so fare due cose in python... :D:D:D

C'è la prima parte (la conversione da Metastock ad asciii) in DOS che è lenta (circa 3 minuti), ma lì non ci posso fare niente, perché in python sarebbe ancora più lenta.

La dipende dal programmino atem.exe che impiega un certo tempo a processare i file metastock... sarebbe bello avere un programma che faccia tutto in soli pochi secondi!

Sono due compilatori C++, gratuiti ed ottimi.
Quanto e' lenta? Prova con Go, un linguaggio davvero semplice, compilato, che e' abbastanza veloce. Non come C++ ma si e' un po' piu' veloce di Java per alcuni task.
 
ma in python non c'è pyms?
oppure ms2txt?
li hai provati?
sono su GitHub...

cmq son molto contento che hai risolto... OK!OK!OK!
se ci mostravi il codice probabilmente l'avremmo visto subito... :D forse...

x andare a prelevare l'ultima data di un file ASCII (che può essere utile per l'appendimento) utilizzo il seguente metodo:

with open(nome file, 'r') as fp:
lines=fp.readlines()
end=lines[-1].split(',')[0]

xò magari ce ne sono anche di più veloci e pythonici...
tu hai qualcosa di simile da suggerire?
thx in advance... :bow::bow::bow:

Ciauuuuu

PS
cmq 3 minuti secondo me è ottimo per la gestione di qualche migliaio di file... non so se conviene perdere tempo sui convertitori python...

Credo di aver letto che Atem è più veloce di ms2txt...

...pyms non so cosa è.

Per la data non ho avuto problema.
La prima finzione che ho fatto controlla campo per campo tutta la riga di dati e dal campo DATA estraggo la data e dal campo TIME estraggo il time.
 
Indietro