Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola razr 60 Ultra: il migliore! Peccato per l’AI un po’ ''zoppa''. Recensione
Motorola razr 60 Ultra: il migliore! Peccato per l’AI un po’ ''zoppa''. Recensione
Motorola rinnova i suoi smartphone pieghevoli e abbiamo avuto modo di mettere sotto torchio questo nuovo razr 60 Ultra, flagship della serie, che cambia alcune cose migliorando in molti aspetti e soprattutto divenendo, aspettando Samsung e gli altri, il pieghevole a conchiglia perfetto. Peccato la mancanza di Moto AI in italiano.
AWS Summit Milano 2025: accelerare sull'IA per liberare il potenziale delle imprese italiane
AWS Summit Milano 2025: accelerare sull'IA per liberare il potenziale delle imprese italiane
Dal palco dell’AWS Summit Milano 2025 arriva un appello chiaro: accelerare sull’adozione dell’intelligenza artificiale. Tecnologie mature, casi d’uso concreti e nuove competenze al centro della trasformazione. Il cloud come abilitatore, tra infrastruttura, dati e sicurezza
Recensione HONOR Pad 10: a questo prezzo fa tremare la concorrenza
Recensione HONOR Pad 10: a questo prezzo fa tremare la concorrenza
HONOR Pad 10 è una fra le nuove proposte più convincenti nel mercato dei tablet Android, e offre al suo utente un display 2,5K da 12,1 pollici con frequenza di aggiornamento a 120Hz, design dalle dimensioni compatte e un ottimo processore. Il tutto mantenendo un prezzo accessibile che lo posiziona come alternativa credibile ai tablet premium del mercato, anche di Apple.
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


Motorola razr 60 Ultra: il migliore! Peccato per l’AI un po’ ''zoppa''. Recensione Motorola razr 60 Ultra: il migliore! Peccato per...
AWS Summit Milano 2025: accelerare sull'IA per liberare il potenziale delle imprese italiane AWS Summit Milano 2025: accelerare sull'IA per l...
Recensione HONOR Pad 10: a questo prezzo fa tremare la concorrenza Recensione HONOR Pad 10: a questo prezzo fa trem...
GIGABYTE RTX 5060 Ti EAGLE OC ICE alla prova: compatta ed essenziale GIGABYTE RTX 5060 Ti EAGLE OC ICE alla prova: co...
AMD Ryzen Threadripper 9000 e Radeon AI Pro R9700, per le workstation AI AMD Ryzen Threadripper 9000 e Radeon AI Pro R970...
La AI di Barcellona analizza i video e i...
Cloudflare ha sventato il più gra...
Garmin Index Sleep Monitor, sonno sotto ...
Sony WF-C700N al minimo storico su Amazo...
Doppio JBL: su Amazon il bundle con due ...
Q25G4SR, Q27G4ZR e Q27G42ZE: ecco i nuov...
Il weekend inizia bene su Amazon: tanti ...
DJI Mini 4K o Mini 3? Sono entrambi in s...
Il tuo alimentatore Corsair fa clic? Nie...
A 199€ è imperdibile: Roborock Q7...
A 109€ c'è una scopa elettrica da...
300€ di sconto: Asus Zenbook da 1,2Kg co...
Intel 18A: prestazioni, efficienza e den...
Hexagon e NVIDIA hanno creato AEON, il r...
Microsoft annuncia nuove soluzioni per i...
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: 19:42.


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