PDA

Visualizza la versione completa : performance


newscripter
04-10-2008, 09:03
Ciao a tutti,
sono un programmatore in ambiente .Net ma purtroppo non ho fatto il normale percorso che hanno fatto tutti i programmatori professionisti quindi mi mancano un po di conoscenze su linguaggi come c/c++ o assemby.
Come tutti credo sappiate, le windows form di .Net hanno l'inconveniente di essere relativamente pesanti infatti una finestra con un pulsante che non fa nulla utilizza 17-18 MB di memoria (taskManager).
Io sto sviluppando (è ancora in progettazione) un'applicazioncina a scopo di divertimento e quindi vorrei divertirmi a ottimizzarla il piu possibile.
per rendere il programma estremamente leggero quali sono i linguaggi piu prestanti in tal senso?
ho visto una versione di notepad scritta in assembly e utilizza 50 KB è fantastico esistono linguaggi ad un livello un po piu alto capaci di avvicinarsi a questi risultati? Usare l'assembly per un porgramma mi sembra troppo per non vorrei che il divertimento si trasformasse in frustrazione...ma è possibile utilizzare l'assembler per le finestre e le interfacce e scrivere le classi con un altro linguaggio ad es il c++?

mi servirebbero un po di dritte a riguardo grazie anticipatamente e spero di aver lanciato una sfida stimolante anche ad altri programmatori di html.it.... :ciauz:

billiejoex
04-10-2008, 09:31
Capisco che è didattica ma investire del tempo in una ottimizzazione simile mi pare un po' troppo, anche se 18 Mb di memoria occupata per una finestra con un pulsante mi sembrano effettivamente un po' tantini (un programma simile in Python ne occupa 5-6). :fagiano:
Io investirei il mio tempo facendo cose più utili ma se proprio sei intenzionato a sprecarlo utilizza C o C++, non certo assembler.
Non avrebbe minimamente senso (anche rifarlo in C e C++, IMHO, non ha alcun senso ma contento tu...).

oregon
04-10-2008, 10:34
Originariamente inviato da billiejoex ...

Concordo ...

pallinopinco
04-10-2008, 13:09
Concordo e suggerisco la lettura di uno dei tanti essay sull'argomento, per esempio: "How much memory does my .NET application use? (http://www.itwriting.com/dotnetmem.php)".

newscripter
07-10-2008, 14:05
A dire il vero pensavo di trovare qualcuno che la pensasse come me ma evidentemente mi sono sbagliato. cmq se io volessi creare un'applicazione slegata dal framework? la risposta credo sia utilizzare il c++ ma se avete consigli li accetto volentieri.
a presto e grazie ciao

billiejoex
07-10-2008, 14:13
A dire il vero pensavo di trovare qualcuno che la pensasse come me ma evidentemente mi sono sbagliato
Non preoccuparti, il mondo è ancora pieno di programmatori che credono davvero che investire 1 anno di tempo extra su una applicazione gia funzionante giustifichi quello 0.1 di guadagno che percepisci quando vedi un pop-up apparire 0.01 ms in anticipo. :)

newscripter
07-10-2008, 14:51
Bhe io davo per scontato fosse chiaro che questa mia ricerca non ha lo scopo di ottimizzare il prodotti che vendo per quelli qualsiasi cosa mi fa risparmiare tempo è ottima. Tutto ciò era solo per divertirmi a fare piccole applicazioni per divertimento e per conoscere anche se a grandi linee i linguaggi che hanno fatto la storia.
Sicuramente non credo sia saggio perdere tempo per avere prestazioni che poi il cliente non nota e non riesce a giustificarne il prezzo... ;)

:ciauz:

Paulin
07-10-2008, 15:33
Originariamente inviato da newscripter Come tutti credo sappiate, le windows form di .Net hanno l'inconveniente di essere relativamente pesanti infatti una finestra con un pulsante che non fa nulla utilizza 17-18 MB di memoria (taskManager).
Io evito come la puzza le "Managed Extensions" di microsoft, non ha senso per me che sto imparando a sviluppare in C++ appoggiarmi sul NET Framework per poi ottenere le stesse prestazioni (in velocità) di un qualunque linguaggo interpretato. Allora avrei potuto imparare a sviluppare in Python, che è molto più semplice e vantaggioso, o in Visual Basic, o in Java, ...ecc.



Originariamente inviato da newscripter per rendere il programma estremamente leggero quali sono i linguaggi piu prestanti in tal senso?
L'assembly sicuramente, ma è ostico ed è impensabile lo sviluppo e la manutenzione di applicativi relativamente complessi.
Il C è un buon sostituto dell'assembly, se non si vuole rinunciare al completo controllo della macchina, senza preoccuparsi di dover lavorare direttamente sui suoi registri.
Con il C++ si è disposti a sacrificare un minimo di velocità rispetto al C (soprattutto se si fa largo uso del Polimorfismo) ma perlomeno si possono gestire oggetti e templates, e questo permette di tenere in mano più facilmente applicativi molto complessi e di grandi pretese.

Ciao

newscripter
07-10-2008, 20:45
grazie Paulin,
eventualemente quali librerie si usano con c o c++ per programmare applicazioni a finestre?
ho sentito parlare delle qt ma ce ne sono altre e non parametri per decidere quali usare.
Un'ultima cosa, quale ambiente di sviluppo conviene usare...io conosco un po eclipse per il java ma ho sentito che a volte da problemi con i plugin per il c++. Cosa consigliate?

pallinopinco
07-10-2008, 21:23
eventualemente quali librerie si usano con c o c++ per programmare applicazioni a finestre?


Se il tuo obiettivo è usare il C/C++ per sviluppare applicazioni a finestre allora:

1) Non aspettarti grandi miglioramenti in termini di prestazioni
2) Aspettati un allungamento dei tempi di sviluppo

Loading