Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Mavic 4 Pro: sblocca un nuovo livello per le riprese aeree
DJI Mavic 4 Pro: sblocca un nuovo livello per le riprese aeree
DJI Mavic 4 Pro porta in dote il nuovo Stabilizzatore Infinity a 360°, che permette nuovi gradi di libertà nelle riprese aeree. Non solo può ruotare a 360 gradi, ma abilita anche riprese dal basso, con inclinazione della videocamera fino a 70°. Il triplo modulo di ripresa offre una fotocamera Hasselblad 28mm con sensore da 100 megapixel e video 6K, ma si spinge fino al teleobiettivo da 50 megapixel e 168mm di focale equivalente. Nuova avionica e batteria per voli fino a 51 minuti di autonomia. La nostra prova
Idrogeno verde in Europa: nuovi studi prevedono costi ben superiori alle aspettative
Idrogeno verde in Europa: nuovi studi prevedono costi ben superiori alle aspettative
Siamo tutti d'accordo: una eventuale diffusione massiccia di idrogeno verde, prodotto esclusivamente da fonti rinnovabili, risolverebbe tanti problemi. Ma siamo ancora lontanissimi da uno scenario del genere e c'entra anche l'Africa. Facciamo il punto della situazione sulla base di studi autorevoli, recentemente pubblicati.
Mario Kart World lancia Switch 2: la magia Nintendo ora in 4K
Mario Kart World lancia Switch 2: la magia Nintendo ora in 4K
Abbiamo provato esaustivamente due dei titoli di lancio della nuova console di Nintendo, il cui debutto è previsto per la settimana in corso. Mario Kart World e Nintendo Switch 2 Welcome Tour si rivelano sorprendenti per certi aspetti e anche perché esaltano alcune delle nuove caratteristiche di Switch 2
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-11-2013, 23:30   #1
soniaa
Member
 
Iscritto dal: Mar 2010
Messaggi: 46
Linguaggio di programmazione, quale e' il piu veloce?

Salve, sto cercando di risolvere un problema matematico;
ho realizzato il mio software in alcuni linguaggi, ma ho bisogno di piu velocita' ancora perche per giungere alla risoluzione dovranno essere fatti molti miliardi di miliardi di calcoli matematici.
Attualmente sto provando col QB64 (che se non sbaglio compila in C++) ma pur adottando la via di espandere il programma al massimo senza usare variabili del tipo a(10) che portano via molto tempo di calcolo, ma usando invece a1, a2, a3 etc, ancora la velocita' non e' abbastanza e ci impieghera' molti anni.
Inoltre il QB64 (come il quickbasic) non supporta il "goto 1000+a" ma solo goto fissi.
Questo ostacolo e' difficilmente aggirabile e con il ON a GOTO 1001,1002,1003 etc il sistema rallenda a dismisura quasi piu che scrivere decine di IF-GOTO.
..e con CALL la velocita rallenta ancora di piu'...

Domanda 1:
Quale e' un linguaggio di programmazione che mi puo dare piu velocita' di calcolo? magari con GOTO 1001+a (GOTO dinamici) ?

Domanda2:
Inoltre posso chedervi se qualcuno sa' la formula per sapere da quanti bit e' composto un mumero ?
es: premdiamo il numero 8 che in unsigned binario e' 1000 e quindi composto da 4 bit, esiste una formula veloce(la velocita' e' essenziale!) per sapere quanti bit occupa ??? (cioe' da 8 o 1000 ottenere 4 o 100)
Grazie in anticipo, Soniaa
soniaa è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2013, 23:56   #2
nyox69
Bannato
 
Iscritto dal: Nov 2013
Messaggi: 9
Inviato dal mio Nexus 7 utilizzando Tapatalk
nyox69 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 00:27   #3
airon
Senior Member
 
Iscritto dal: Feb 2004
Città: milano
Messaggi: 2144
Non ho capito nulla di quello che hai scritto
Forse però ti conviene non usare i goto che sono il male, quasi assoluto

Detto questo per calcolare quanti bit necessita un numero si usano i logaritmi. Non ci si scappa.

numero_bit = ceil(ln(numero) / ln(2));

Ciao

Ultima modifica di airon : 16-11-2013 alle 00:30.
airon è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 06:32   #4
ingframin
Senior Member
 
L'Avatar di ingframin
 
Iscritto dal: Apr 2010
Città: Leuven
Messaggi: 667
Quote:
Originariamente inviato da soniaa Guarda i messaggi
Salve, sto cercando di risolvere un problema matematico;
ho realizzato il mio software in alcuni linguaggi, ma ho bisogno di piu velocita' ancora perche per giungere alla risoluzione dovranno essere fatti molti miliardi di miliardi di calcoli matematici.
Attualmente sto provando col QB64 (che se non sbaglio compila in C++) ma pur adottando la via di espandere il programma al massimo senza usare variabili del tipo a(10) che portano via molto tempo di calcolo, ma usando invece a1, a2, a3 etc, ancora la velocita' non e' abbastanza e ci impieghera' molti anni.
Inoltre il QB64 (come il quickbasic) non supporta il "goto 1000+a" ma solo goto fissi.
Questo ostacolo e' difficilmente aggirabile e con il ON a GOTO 1001,1002,1003 etc il sistema rallenda a dismisura quasi piu che scrivere decine di IF-GOTO.
..e con CALL la velocita rallenta ancora di piu'...

Domanda 1:
Quale e' un linguaggio di programmazione che mi puo dare piu velocita' di calcolo? magari con GOTO 1001+a (GOTO dinamici) ?

Domanda2:
Inoltre posso chedervi se qualcuno sa' la formula per sapere da quanti bit e' composto un mumero ?
es: premdiamo il numero 8 che in unsigned binario e' 1000 e quindi composto da 4 bit, esiste una formula veloce(la velocita' e' essenziale!) per sapere quanti bit occupa ??? (cioe' da 8 o 1000 ottenere 4 o 100)
Grazie in anticipo, Soniaa
Quick basic era un interprete, non un compilatore.
Mostra il codice e ti possiamo dare una mano.
Che altri linguaggi hai usato? Hai provato Fortran?
http://www.fortrantutorial.com/

È considerato il nonno di matlab, è fatto per la matematica (fortran = formula translator) e non credo esistano linguaggi più rapidi,
a parte il linguaggio macchina.
__________________
L'elettronica digitale non esiste, è solo elettrotecnica con interruttori piccoli!

Ultima modifica di ingframin : 16-11-2013 alle 06:38.
ingframin è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 07:06   #5
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
In effetti Fortran ancora oggi rimane imbattuto per macinare numeri. Si potrebbe pensare di realizzare il core dell'algoritmo in assembly ottimizzato a manina, ma prima... bisognerebbe conoscere l'algoritmo da velocizzare, appunto.

Certamente per tirare fuori il numero di bit utilizzati non ricorrerei alla formuletta classica che è stata posta. A seconda dei casi (cioè del range di valori da elaborare), si potrebbe usare l'algoritmo di bisezione, una LUT, oppure una combinazione dei due.

In generale e per quanto possibile, è sempre meglio evitare l'uso di salti, specialmente se condizionati.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 12:19   #6
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
In FORTRAN puoi usare dei GOTO "dinamici":

Codice:
SUBROUTINE MYSUBWITHGOTO(K)

// dichiarazioni
C
        GOTO (10,1,2,3,4,5,6,7,8,9,91,92,93,930,931,3,98,84,18,19,20,21,
     #        22) K+1
C
Cioè a seconda del valore di K, salti alle label 10, 4, 91, 92...eccetera. Questo vale in FORTRAN77, non so se è una feature deprecata nelle versioni più recenti ma tieni conto che tutti i compilatori principali (Intel Fortran Compiler 13 e gfortran, parte di GCC) riconoscono tutte le sintassi FORTRAN dal 77 in poi.
vendettaaaaa è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 13:04   #7
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4906
"formula veloce"?
http://x86.renejeschke.de/html/file_...x86_id_20.html
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 13:50   #8
soniaa
Member
 
Iscritto dal: Mar 2010
Messaggi: 46
Spero non pensiate che il mio silenzio sia ingratitudine,...
..anzi vi RINGRAZIO tantissimo e avete risposto esattamente alle mie domande.
Ora elaboro i vostri consigli...dunque Fortran... uhmm, da una prima occhiata non sembra difficile...ce la potrei fare..credo...

stasera faro' un primo approccio al Fortran e qualche test di velocita' di puro calcolo matematico(a me serve solo puro calcolo,pero' man mano che il mio programma arrivera' a punti precisi, dovra' esportare in un normalissimo file txt circa 40 numeri...che alla fine diventeranno qualche miliardo,spero si possa col fortran salvare dati su file...non necessariamente grandi ma diverse migliaia di file (aprendoneo 1 alla volta e quando vi ho inserito esempio 1000000 di numeri, chiuderlo e aprirne un nuovo altro vuoto), poi vi dico...
Graziee
soniaa è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 13:56   #9
soniaa
Member
 
Iscritto dal: Mar 2010
Messaggi: 46
Quote:
Originariamente inviato da vendettaaaaa Guarda i messaggi
In FORTRAN puoi usare dei GOTO "dinamici":

Codice:
SUBROUTINE MYSUBWITHGOTO(K)

// dichiarazioni
C
        GOTO (10,1,2,3,4,5,6,7,8,9,91,92,93,930,931,3,98,84,18,19,20,21,
     #        22) K+1
C
Cioè a seconda del valore di K, salti alle label 10, 4, 91, 92...eccetera. Questo vale in FORTRAN77, non so se è una feature deprecata nelle versioni più recenti ma tieni conto che tutti i compilatori principali (Intel Fortran Compiler 13 e gfortran, parte di GCC) riconoscono tutte le sintassi FORTRAN dal 77 in poi.
Certo che un GOTO di questo genere(che e' presente anche nel QB64"ON a GOTO 100,150,labelqqq,102,etc") richiede in esecuzione un tempo di elaborazione non indifferente,
ma non esistono piu i vecchi "GOTO 1000+a" oppure "GOTO a$" oppure "GOTO VAL (A$)"???
,..quelli si' che facevano girare i programmi veloce!!!

Ultima modifica di soniaa : 16-11-2013 alle 14:08.
soniaa è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 14:15   #10
soniaa
Member
 
Iscritto dal: Mar 2010
Messaggi: 46
Quote:
Originariamente inviato da ingframin Guarda i messaggi
Quick basic era un interprete, non un compilatore.
Mostra il codice e ti possiamo dare una mano.
Che altri linguaggi hai usato? Hai provato Fortran?
http://www.fortrantutorial.com/

È considerato il nonno di matlab, è fatto per la matematica (fortran = formula translator) e non credo esistano linguaggi più rapidi,
a parte il linguaggio macchina.
QuickBasic puo' anche compilare (in C credo...)
QB64 compila solo, (in C++ credo) e la velocita' del C++ rispetto al C e' maggiore di circa 40 per cento sul mio programma...

Ultima modifica di soniaa : 16-11-2013 alle 14:17.
soniaa è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 20:02   #11
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Potresti usare un vettore di puntatori a funzione in C ... mi sembra assurdo parlare di GOTO o ON GOTO ...
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 20:19   #12
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Forse vuole dire che il compilatore trasforma il sorgente QB in un sorgente C che poi viene compilato da un compilatore C.
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 20:33   #13
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Non mi pare succedesse per tutte le versioni di QB ma mi sembra di ricordare (è passato un po' di tempo) che il "Basmark QuickBASIC" (che ho usato su SCO Xenix) funzionasse così ...
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2013, 21:18   #14
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Quote:
Originariamente inviato da soniaa Guarda i messaggi
Spero non pensiate che il mio silenzio sia ingratitudine,...
..anzi vi RINGRAZIO tantissimo e avete risposto esattamente alle mie domande.
Ora elaboro i vostri consigli...dunque Fortran... uhmm, da una prima occhiata non sembra difficile...ce la potrei fare..credo...

stasera faro' un primo approccio al Fortran e qualche test di velocita' di puro calcolo matematico(a me serve solo puro calcolo,pero' man mano che il mio programma arrivera' a punti precisi, dovra' esportare in un normalissimo file txt circa 40 numeri...che alla fine diventeranno qualche miliardo,spero si possa col fortran salvare dati su file...non necessariamente grandi ma diverse migliaia di file (aprendoneo 1 alla volta e quando vi ho inserito esempio 1000000 di numeri, chiuderlo e aprirne un nuovo altro vuoto), poi vi dico...
Graziee
Io uso Fortran per lavoro ed eviterei di manipolare file di testo (o qualsiasi altra operazione di input/output) con quel maledetto linguaggio. Potresti scrivere le subroutine di calcolo in Fortran (se trovi che è davvero più veloce) e chiamarle dal C/C++, così una volta effettuato il calcolo ritornano a C il/i valore/i e dal C li salvi. Posto che la grande maggioranza del tempo di esecuzione stia nell subroutine, così questo espediente non ti toglierebbe preziosi cicli di clock.
vendettaaaaa è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2013, 00:13   #15
soniaa
Member
 
Iscritto dal: Mar 2010
Messaggi: 46
Sto provando sto Fortran...
Rispetto al QB64;
piu veloce nei loop (il doppio/triplo)
piu veloce IF (+400%)
piu LENTO nel puro calcolo (-il doppio/triplo)
soniaa è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2013, 00:27   #16
soniaa
Member
 
Iscritto dal: Mar 2010
Messaggi: 46
TEST 1 (FOR / LOOP) QB64 4.5sec Fortran 2.0sec

QB64 code:
DIM a AS LONG
FOR a = 1 TO 1000000000
NEXT a

Fortran code:
program first
integer a
do a=1,1000000000
end do
end program first
soniaa è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2013, 00:38   #17
soniaa
Member
 
Iscritto dal: Mar 2010
Messaggi: 46
TEST 2 (IF) QB64 12sec Fortran 5sec

QB64 code:
DIM a AS LONG
FOR a = 1 TO 1000000000
IF b > a THEN b = 33
IF c > a THEN c = 44
IF d > a THEN d = 55
NEXT a

Fortran code:
program first
integer a,b,c,d
b=12
c=13
d=14
do a=1,1000000000
IF (b > a) b = 33
IF (c > a) c = 44
IF (d > a) d = 55
end do
end program first
soniaa è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2013, 00:47   #18
soniaa
Member
 
Iscritto dal: Mar 2010
Messaggi: 46
TEST 3 (puro calcolo) QB64 54sec Fortran 110sec

QB64 code:
DIM a AS LONG
FOR a = 1 TO 1000000000
b = a / 1003 + a / 1005
c = a / 1008 + a / 1002
d = a / 1001 + a / 1006
NEXT a

Fortran code:
program first
integer a,b,c,d
b=12
c=13
d=14
do a=1,1000000000
b = a / 1003 + a / 1005
c = a / 1008 + a / 1002
d = a / 1001 + a / 1006
end do
end program first

Ultima modifica di soniaa : 17-11-2013 alle 01:16.
soniaa è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2013, 01:31   #19
soniaa
Member
 
Iscritto dal: Mar 2010
Messaggi: 46
Quote:
Originariamente inviato da airon Guarda i messaggi
Non ho capito nulla di quello che hai scritto
Forse però ti conviene non usare i goto che sono il male, quasi assoluto

Detto questo per calcolare quanti bit necessita un numero si usano i logaritmi. Non ci si scappa.

numero_bit = ceil(ln(numero) / ln(2));

Ciao
Grazie per la formula...mi sara' MOLTOO utile!
ln immagino che sia log a base10 vero?
ma il ceil cosa significa? forse la parte intera?...ma allora alla tua formula bisogna alla fine aggiungere "+1" vero???
inoltre: se i GOTO sono sconsigliati allora cosa usi dei CALL/Function??? (che pero sono molto piu leenti dei GOTO!!!)

Ultima modifica di soniaa : 17-11-2013 alle 01:39.
soniaa è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2013, 08:27   #20
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
p.s.: ln è il logaritmo naturale

Lascia perdere questa bigiolica sui goto. Sto cazzo di Djkstra ha fatto il lavaggio del cervello a tutti ormai...I goto non vanno quasi mai bene quando si implementa una logica, ed è ovvio, ma se li si vuole usare in casi come questo, dove svolgono la funzione di switch/case, in un pezzo di codice per il calcolo numerico dove non c'è neanche una logica da implementare, allora non rompete l'anima!
Io personalmente li uso in Fortran proprio in questo modo e non danno mai problemi. Tutt'altra cosa sarebbe usarli per rompere dei cicli o far cose logicamente meno ovvie.
Inoltre li uso nei programmini di test che faccio ogni tanto in C++ per tornare all'inizio dell'esecuzione se l'utente dice di continuare, molto più pratico che stare a wrappare tutto in un ciclo strutturato, e anche lì non si rischiano errori di alcun tipo...
vendettaaaaa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Mavic 4 Pro: sblocca un nuovo livello per le riprese aeree DJI Mavic 4 Pro: sblocca un nuovo livello per le...
Idrogeno verde in Europa: nuovi studi prevedono costi ben superiori alle aspettative Idrogeno verde in Europa: nuovi studi prevedono ...
Mario Kart World lancia Switch 2: la magia Nintendo ora in 4K Mario Kart World lancia Switch 2: la magia Ninte...
La rivoluzione dei dati in tempo reale è in arrivo. Un assaggio a Confluent Current 2025 La rivoluzione dei dati in tempo reale è ...
SAP Sapphire 2025: con Joule l'intelligenza artificiale guida app, dati e decisioni SAP Sapphire 2025: con Joule l'intelligenza arti...
HONOR 400 vs HONOR 400 Pro: tutte le dif...
Nintendo Switch 2 debutta oggi nei negoz...
Samsung Galaxy S25 Edge è disponi...
Nothing presenterà le sue prime c...
Le nuove soluzioni Lenovo per lo storage...
Netatmo presenta la nuova Stazione Meteo...
Cybersecurity: Fortinet rende disponibil...
Netatmo Stazione Meteo ORIGINAL: il rito...
Il meglio dello State of Play, dal nuovo...
Homematic IP: nuova app per ottimizzare ...
Logitech G Astro A30 LIGHTSPEED in offer...
Splendido TV Samsung da 65'' in offerta ...
Una super offerta su un PC Desktop pront...
Amazon rivoluzionerà le consegne:...
Silent Hill f: allo State of Play la dat...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www1v