|
|
|
![]() |
|
Strumenti |
![]() |
#121 | ||||
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Quindi il codice generato non può essere uguale. Quote:
Quote:
Quote:
![]() Speigami quale OS ci girava. Qualche riga di codice C per sistemi embedded l'ho scritta (ARM7 32KB) su questi sistemi non hai l'MMU, quindi non ci gira neanche Linux, e l'allocazione dinamica della memoria è un sogno. Sarei curioso di sapere su quale sistema con 1KB di RAM hai visto girare Java. |
||||
![]() |
![]() |
![]() |
#122 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Non viene eseguita alcuna istruzione di CPU per profilare il codice vero? Prima si dice che la JVM ha un peso 0, poi che esegue un profiling accuratissimo che ottimizza il codice macchina generato dinamicamente senza nessun sovraccarico sul sistema. |
|
![]() |
![]() |
![]() |
#123 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Facciamo una cosa: quotami chi e dove si sarebbe detto ciò che hai scritto...
![]()
__________________
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 |
![]() |
![]() |
![]() |
#124 |
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Forse Tommino ha, un po' platealmente, espresso un dubbio che ha colpito anche me leggendo il tuo intervento. Hai detto una cosa estremamente interessante ma forse usando una sintetizzazione eccessiva. Il "rendersi conto" è naturale per gli umani ma parlando di un software questo dovrebbe (uso il condizionale perchè non so se ciò accade ed eventualmente come) basarsi su una precisa parametrizzazione che comporta anche una sorta memoria storica (i dati raccolti a run-time) tra l'altro con una certezza quasi assoluta (se errasse ad interpretare i dati che riceve potrebbe profilare il software al peggio anzichè al meglio). Inoltre questo lavoro costa risorse, anche se così a occhio non mi pare un fattore assolutamente critico ma importante si. Non so, così divagando è un meccanismo che, se presente andrebbe conosciuto meglio. Inoltre anche "i JIT" in ambito .Net fanno lo stesso?
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. ![]() |
![]() |
![]() |
![]() |
#125 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Non conosco i dettagli dell'implementazione delle VM di Java e .NET, per cui non posso risponderti.
Per il resto, è chiaro che la profilazione ha un costo: questo mi pare che nessuno qui l'abbia mai detto. Se leggi nel link su Dynamo che ho postato, ne parlano molto meglio. I risultati a cui sono giunti le ricerche di HP è che lo stesso codice compilato (quindi nemmeno in forma di bytecode: era proprio codice macchina PA-RISC), ma eseguito da Dynamo che ne analizzava l'esecuzione risultava mediamente più veloce grazie alla profilazione che permetteva man mano di tirare fuori codice più efficiente. Tra l'altro faccio notare che i processori moderni (già dai tempi del Pentium) hanno molti registri di sistema appositamente dedicati alla raccolta di informazioni sull'esecuzione. Queste sono a costo zero come calcolo, fatta eccezione per la loro lettura e interpretazione ovviamente.
__________________
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 |
![]() |
![]() |
![]() |
#126 |
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Ok, grazie per le precisazioni.
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. ![]() |
![]() |
![]() |
![]() |
#127 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5845
|
Quote:
Trall'altro non ho ancora capito se la JVM applica le tecniche menzionate in quell'articolo. Perchè se non le applica, allora ha poco senso parlare di codice ottimizzato con l'hardware per Java.. Ultima modifica di Unrue : 31-12-2007 alle 15:57. |
|
![]() |
![]() |
![]() |
#128 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Non dipende dal linguaggio usato? No, ma infatti dipende dal fatto che si faccia uso di una VM o meno, a prescindere dal linguaggio usato, appunto (in teoria potrei avere codice C++ compilato in bytecode e poi eseguito da una VM).
L'avevo scritto: non è una "guerra" fra codice compilato e codice in bytecode, ma fra chi usa una VM o no. ![]() Come detto già in precedenza, non conosco i dettagli della JVM, per cui non ti posso rispondere...
__________________
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 |
![]() |
![]() |
![]() |
#129 | ||
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5845
|
Quote:
![]() Quote:
![]() Ultima modifica di Unrue : 31-12-2007 alle 16:31. |
||
![]() |
![]() |
![]() |
#130 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5845
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#131 | |||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Mentre una VM può farne uso per generare codice in base a esse. Quote:
Quote:
__________________
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 |
|||
![]() |
![]() |
![]() |
#132 | ||
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5845
|
Quote:
Quote:
![]() Bye bye e buon anno ![]() Ultima modifica di Unrue : 31-12-2007 alle 16:49. |
||
![]() |
![]() |
![]() |
#133 | |||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
La logica di branch prediction non c'entra nulla. Quote:
Quote:
![]()
__________________
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 |
|||
![]() |
![]() |
![]() |
#134 | |
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4741
|
Quote:
![]() ma quelle che avevo in mente prima (chiedo scusa, nella fretta ho formulato il post precedente in modo poco chiaro ) erano non tanto penalità da branch misprediction, ma cache miss se il blocco di codice coperto dalla prima condizione (non verificata) è lungo, quello seguente, non essendo "locale" al primo, resterà escluso dal prefetch in cache della prima istruzione di test e di quelle attigue - al che entrarvi comporterà un cache miss ( questo anche se il processore eseguisse il branch corretto nella totalità dei casi, cioè se il branch predictor avesse un ' accuratezza del 100%, cosa che anche con i predittori attuali a tabelle multiple, non avviene - la precisione si attesta sul 97% - motivo per cui su certi processori l' instruction scheduling interno avviene in modo ottimistico, ignorando il responso della BP per, eventualmente e successivamente, ripetere il flusso di esecuzione corretto, dal branch in avanti ... certo, si potrebbe obiettare che su quegli stessi processori la L1I allinea le micro-ops sulle cache lines, sequenziando direttamente un flusso di esecuzione che copre i salti condizionati, quindi un' ottimizzazione di questo tipo potrebbe avere valenza relativa, però... ) se la seconda condizione è quella più frequentemente verificata ( cosa che un compilatore C/C++ statico che non inferisce sulla condizioni di runtime, non ha modo di sapere a priori ), e se l' intera sequenza è racchiusa in un loop, quel loop sarà tipicamente inefficiente ![]() ed è qui che può assumere rilevanza il profiling od anche un compilatore JIT che ottimizzi l' ordine dei blocchi di codice, che è quello che intendevo prima ( e per cui LLVM è nato, anche se LLVM è interessante per tutta una serie di altri aspetti - oltre a poter essere usato come compilatore statico a mo' di alternativa all' ottimizzatore di GCC ...) ma in effetti si comincia a divagare... LLVM di suo avrebbe le potenzialità per portare notevoli benefici su più fronti, un sistema JIT su altri ( non necessariamente e non solo in relazione con la portabilità o con il profiling delle applicazioni), mentre il thread verteva su java ![]() ps: tanti auguri ![]()
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
Ultima modifica di jappilas : 31-12-2007 alle 17:26. |
|
![]() |
![]() |
![]() |
#135 |
Senior Member
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1726
|
ma la branch prediction nn appare in caso di pipeline di cpu? che c'entra con java e c++?
ciao
__________________
Se buttassimo in un cestino tutto ciò che in Italia non funziona cosa rimarrebbe? Il cestino. |
![]() |
![]() |
![]() |
#136 |
Senior Member
Iscritto dal: Mar 2006
Messaggi: 2516
|
Dal basso della mia poca esperienza di programmazione posso dire che tutti i programmi che ho provato scritti in java sono di una lentezza a dir poco esasperante. Un esempio direi Maple, che ho installato da poco, e crasha una volta si e l'altra anche, ma anche eclipse, che è di una lentezza esasperante se non si ha un sistema con almeno 512 mb di ram, a differenza che ne so di un code::blocks che funziona ovunque. In generale programmi con funzionalità equivalenti funzionano meglio se scritti in c++ che se scritti in java.
Questo dettato dalla mia normale esperienza di utilizzatore diciamo medio-avanzato di computer. Per quanto riguarda la programmazione io studio c++ per l'università e la sintassi mi piace molto. D'altro canto ho dato un occhio a java e non posso dire la stessa cosa. Poi però ho letto diverse opinioni riguardo la relativa semplicità rispetto a c++ per quanto riguarda alcune operazioni che invece nel linguaggio di Stroutsap risultano piu complesse, quindi sto seriamente considerando la possibilità di iniziare ad imparare un altro linguaggio. Volevo quindi chiedervi: a che agevolazioni vi riferite? |
![]() |
![]() |
![]() |
#137 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Come avevo già detto, non puoi prendere a esempio programmi che esistono esclusivamente per un determinato linguaggio e generalizzare su quest'ultimo.
Bisogna prendere le STESSE applicazioni, che differiscono esclusivamente per il linguaggio di programmazione usato per implementarle. Quanto alle agevolazioni di cui parli, un ambiente managed (generalmente) ti mette al riparo da segmentation fault / access violation, memory leak, doppia deallocazione della memoria, e qualche altra cosa: veri e propri incubi per chi programma con linguaggi non managed.
__________________
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 |
![]() |
![]() |
![]() |
#138 | |
Senior Member
Iscritto dal: Mar 2006
Messaggi: 2516
|
Quote:
Un altro esempio che posso farti è azureus per esempio: ha piu o meno le stesse possibilità di un programma di torrent avanzato, ma è a dir poco pachidermico. Forse proprio la facilità di cui parli fa si che programmatori diciamo non molto capaci facciano programmi anche piu complessi delle loro possibilità, non so che dirti, perchè se devo dire un programma scritto in java che mi soddisfi per velocità non te ne so dire neanche uno ![]() per quanto riguarda i vantaggi a cui tu fai riferimento, avevo letto dell'estrema facilità nello scrivere interfacce, tramite codice o tramite tool con java, è vero? |
|
![]() |
![]() |
![]() |
#139 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Personalmente mi trovo decisamente meglio con Delphi, che IMHO ancora oggi è imbattibile nella scrittura di applicazioni dotate di GUI.
I vantaggi a cui mi riferivo non hanno a che fare con la creazione di applicazioni dotate di GUI: si tratta di concetti "generali", applicabili a qualunque tipo di codice. Per le altre cose, l'avevo scritto: http://www.hwupgrade.it/forum/showpo...9&postcount=65 Confrontare applicazioni diverse, come Azureus e uTorrent, non ha senso. ![]()
__________________
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 |
![]() |
![]() |
![]() |
#140 | |
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Quote:
Per usare Azureus invece devo lasciare il pc ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:46.