|
|
|
![]() |
|
Strumenti |
![]() |
#201 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
Ho appena fatto partire eclipse ed ecco in allegato i risultati. circa 84 MB. E come ho detto prima l'ho anche usato tranquillamente con progetti da circa 1 Milione di LOCs e avevo problemi (ovviamente) solo in fase di compilazione.
__________________
![]() |
|
![]() |
![]() |
![]() |
#202 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
Elipse europa versione classic ha di default: Eclipse CVS client, Eclipse CVS client resources, Eclipse Java Development Tools, Eclipse JDT plug-in Developer Resources, Eclipse PDE Plug.in Developer Resources, Eclipse RCP, Eclipse RCP Plug-in developer resources, Eclipse plug.in development environment. ...Sinceramente non sembrano proprio pochi. L'unico da te citato è il client CVS x il team synchronize ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#203 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5846
|
Non lo sapevo.Comunque se hanno un thread di suo che gestisce l'interfaccia, allora vuol dire che questa cosa è gestita meglio di Java. A meno che le ultime versioni non hanno sopperito a questo.
Ultima modifica di Unrue : 02-01-2008 alle 15:43. |
![]() |
![]() |
![]() |
#204 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
C'è anche chi non lo ha...come MFC...è semplicemente una scelta progettuale, non è meglio o peggio. In un linguaggio come Java in cui è facilissimo creare thread e gestirli anche io avrei usato una realizzazione come quella attuale.
|
![]() |
![]() |
![]() |
#205 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
Praticamente è tutto fuorchè un caso reale ![]() Comunque non ho capito che intendi con "applicazioni che girano su + processori". I thread servono esattamente per quello scopo. Ogni thread può essere instradato ad un processore fisico (o logico) e venire eseguito in parallelo. Per quanto riguarda il riassemblamento dei rislutati ci sono una miriade di tecniche diverse. La più semplice è la comune barriera che permetti di fissare un "checkpoint" in cui si attende l'arrivo dei risultati intermedi dei vari thread che possono quindi essere reinterpretati correttamente. Introdotta a aprtire da java 5 insieme a tutte le altre strutture ad alto livello per la gestione dei thread.
__________________
![]() |
|
![]() |
![]() |
![]() |
#206 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
![]() Cmq non mi sembra che ci possano essere grandi differenze. Java: Codice:
import java.lang.*; import java.util.*; class MyTest { private int a; private int b; public MyTest () { a = 0; b = 0; } public MyTest (int a, int b) { this.a = a; this.b = b; } public void setA (int a) { this.a = a; } public void setB (int b) { this.b = b; } }; class Alloc { public static void main (String[] args) { allochiamo (); } static void allochiamo () { System.out.println ("Allochiamo un po'..."); long start = Calendar.getInstance().getTimeInMillis (); for (int i = 0; i < 100000000; i++) { MyTest mytest = new MyTest(); } long stop = Calendar.getInstance().getTimeInMillis (); System.out.println ("Fine allocazione"); System.out.println ("Time: " + ((stop - start))); } } Codice:
class MyTest { public: MyTest () { a = 0; b = 0; } MyTest (int a, int b) { this->a = a; this->b = b; } MyTest (const MyTest &myTest) { printf ("Costruttore di copia chiamato\n"); a = myTest.a; b = myTest.b; } void setA (int a) { this->a = a; } void setB (int b) { this->b = b; } private: int a; int b; }; void allochiamo () { for (int i = 0; i < 100000000; i++) { MyTest *p = new MyTest; if (p) delete p; // printf ("%c%d", 13, i); } } int main (int argc, char *argv[]) { try { printf ("Alloco un po'...\n"); time_t start = time (NULL); allochiamo (); time_t stop = time (NULL); printf ("Tempo di allocazione: %d\n", stop - start); } catch (...) { printf ("Exception!\n"); } return 0;
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#207 | ||
Senior Member
Iscritto dal: Nov 2002
Messaggi: 5846
|
Quote:
Quote:
http://www.mpi-forum.org/ |
||
![]() |
![]() |
![]() |
#208 | |||
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
Quote:
Se noti bene ci sono uno o due test in cui java è sopra. Quote:
![]() Hai idea di come viene implementato un sottosistema grafico event-driven quale swing? ![]() In caso in cui la tua applicazione fa operazioni di durata che è possibile assumere atomica allora *potresti* utilizare l'Event Dispatcher Thread stesso per far girare interamente la tua applicazione. Nella vita reale però questo non deve MAI essere fatto dato che se per caso qualcosa non va a buon fine e la tua operazione che avrebbe dovuto essere atomica risulta essere + lenta allora l'EDT rimane bloccato nel tuo metodo e non può fare quello per cui è stato progettato: dispatchare eventi. Quindi sinceramente mi sfugge la tua obiezione. E' proprio il risultato di una ben precisa scelta architetturale il fatto che occorre utilizzare un thread diverso dall'Event Dispatcher Thread per non fare andare in stallo l'interfaccia grafica. Altrimenti spiegami come faresti in C++ a far girare in un unico thread la tua applicazione con metodi bloccanti e il dispatching degli eventi dell'interfaccia grafica ![]()
__________________
![]() |
|||
![]() |
![]() |
![]() |
#209 | |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
Cmq, da wikipedia (Cache-oblivious algorithm): "In computing, a cache-oblivious algorithm is an algorithm designed to exploit the CPU cache without having the size of the cache (or the length of the cache lines, etcetera) as an explicit parameter. An optimal cache-oblivious algorithm is a cache-oblivious algorithm that exploits the cache optimally (in an asymptotic sense, ignoring constant factors). Thus, a cache oblivious algorithm is designed to perform well, without modification, on multiple machines with different cache sizes, or for a memory hierarchy with different levels of cache having different sizes." Ci sono tutte delle ricerche su questi argomenti (che ho linkato).
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
![]() |
![]() |
![]() |
#210 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Che io sappia nessuna interfaccia grafica di serie ha controlli thread safe (non lo sono C#,MFC,wxWidgets,QT e mi sembra anche Java). Quindi a meno di non bloccare completamente l'interfaccia in attesa dell'esecuzione di un comando (mai usato VB?) devi passare il tutto ad un altro thread che poi dovrà sincronizzarsi con quello dell'interfaccia al momento di ritornare il risultato dell'esecuzione. |
|
![]() |
![]() |
![]() |
#211 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
sottovento: è più veloce quello Java, ma mi sembra che tu abbia trovato un caso un po' limite
![]() ![]() |
![]() |
![]() |
![]() |
#212 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
__________________
![]() |
|
![]() |
![]() |
![]() |
#213 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
__________________
![]() |
|
![]() |
![]() |
![]() |
#214 | ||
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
![]() Quote:
__________________
![]() |
||
![]() |
![]() |
![]() |
#215 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
![]() Forse col fatto che il memory manager di Java gestisce in maniera trasparente la memoria? Forse col fatto che il Garbage Collector rende immediato l'uso di oggetti senza preoccuparsi di distruttori o di porre l'oggetto a null? E' ovvio che tutti i vantaggi di java si debbano pagare in qualche misura a livello prestazionale, ma, a dispetto di quanto dite voi, nella maggioranza dei casi il gioco non vale la candela, ovvero per la misera % che potrà essere guadagnata a livello prestazionale in C++ si avrà un incremento molto sensibile dei costi di produzione.
__________________
![]() |
|
![]() |
![]() |
![]() |
#216 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
![]() Il Message Passing è utilizzato, ma non solo, per la comunicazione nei cluster server. Esso se non erro viene utilizzato anche in qualche SO per la comunicazione tra i thread. Ma alla fine è solo un protocollo per lo scambio di dati, non ha nulla a che vedere con l'elaborazione parallela vera e propria ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#217 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
![]() Comunque quelli rappresentano appunto una categoria ben definita di problemi, e in quel caso non si ottimizza per una determinata dimensione di cache ma si suddivide (a quanto ho capito) ricorsivamente il problema in modo che si abbia una dimensione dell'operazione tanto piccola che possa entrare in cache. Quindi, in questo modo, l'ottimizzazione vale per qualsiasi linguaggio utilizzato, dal Python al Java fino al C++... o sbaglio? ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#218 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() Controlla direttamente la memoria occupata...non vorrei che le DLL non te le contasse |
|
![]() |
![]() |
![]() |
#219 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12103
|
Quote:
![]() ora sono con fedora 8 e non posso riavviare.. Comunque 318 MB su ubuntu mi pare tantino ![]() 84 MB dovrebbe essere la memoria RAM fisica occupata.
__________________
![]() |
|
![]() |
![]() |
![]() |
#220 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ci sta anche che non sia il pacchetto minimale...è quello che ti installa con Synaptic...
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:22.