Prestazioni applicazione Visual C++

di il
9 risposte

Prestazioni applicazione Visual C++

Buongiorno a tutti, io normalmente sviluppo applicativi in C# per il mondo dell'industria manufatturiera e, complice questo periodo di sosta forzata, ho dato un'occhiata allo sviluppo in C++ sotto Visual Studio, non per ragioni particolari ma per cercare di comprenderne un po' i meccanismi.
Tenete presente che il mio ultimo applicativo scritto in C (non C++) risale ad almeno 25 anni fa e fu fatto per funzionare su una macchina industriale con un processore Motorola quindi perdonatemi se pongo un quesito magari non proprio ortodosso.
Mi è venuta la curiosità di sapere se, a parità di complessità applicativa, ci sono delle differenze prestazionali significative tra un applicativo scritto in C# e uno in C++.
Non parliamo di applicazioni complesse con grafica 3D e quant'altro ma prendiamo ad esempio una classica applicazione winform con un po' di controlli vari, che interagisce ad es. con un database e che magari si connette tramite socket con l'esterno (esempio classico di roba che mi capita di fare).
Ho visto ad esempio che per sviluppare agevolmente la parte grafica si può creare un progetto C++ CLR avendo così a disposizione la toolbox, ma in questo caso, trattandosi di CLR, non risulterà alla fine molto simile ad uno scritto in C# o VB Net?

Ciao e grazie a chi vorrà chiarirmi le idee.

9 Risposte

  • Re: Prestazioni applicazione Visual C++

    "ci sono delle differenze prestazionali significative tra un applicativo scritto in C# e uno in C++"
    secondo me no almeno non percettibili dall'utente
    per un'applicazione che interagisce con un essere umano ed un db C# è , come prestazioni , ampiamente sufficiente,in ogni caso anche in C# puoi usare le dll tramite il meccanismo di DllImport https://docs.microsoft.com/it-it/dotnet/api/system.runtime.interopservices.dllimportattribute?view=netcore-3.1
  • Re: Prestazioni applicazione Visual C++

    Se usi .Net ilconfronto è inutile (quindi C++/CLR o C# o VB.NET non da differenza).

    Il C/C++ Nativo 32/64 può essere più veloce in particolari situazioni legate all'hardware ma non nei casi che hai citato tu.
  • Re: Prestazioni applicazione Visual C++

    Il C++ ha visto una notevole evoluzione negli ultimi anni.
    Quanto alla variante basata su .NET, la stessa Microsoft sconsiglia di mischiare codice standard con quello managed e raccomanda di usarlo solo come ponte fra oggetti .NET e standard.
    In alternativa per la grafica ci sta il framework uwp o xaml island, ma solo per Windows 10. Oppure le librerie QT che invece supportano molte piattaforme, ma come hanno detto potrebbe non valere la pena cambiare linguaggio.
  • Re: Prestazioni applicazione Visual C++

    Quanto alla variante basata su .NET, la stessa Microsoft sconsiglia di mischiare codice standard con quello managed e raccomanda di usarlo solo come ponte fra oggetti .NET e standard
    Puoi chiarirmi questo punto? Cosa intendi con ponte?
    ma come hanno detto potrebbe non valere la pena cambiare linguaggio
    Si sicuramente nel mio caso, ma sto cercando di capire le potenzialità.
  • Re: Prestazioni applicazione Visual C++

    Lucios ha scritto:


    Si sicuramente nel mio caso, ma sto cercando di capire le potenzialità.
    Come ti ho detto prima, dipende da cosa ci devi fare. Le potenzialità sono massime se il tuo fine è scrivere device driver o roba del genere.
    Per applicazioni con interfaccia e db (diciamo gestionali) non ha senso usare il C++.

    Se non ti è chiaro, dai maggiori dettagli, non restare sul vago ...
  • Re: Prestazioni applicazione Visual C++

    Lucios ha scritto:


    Puoi chiarirmi questo punto? Cosa intendi con ponte?

    Per esempio convertire tipi C in tipi dotNET e viceversa, o chiamare funzioni scritte in linguaggi dotNET tipo C#.
  • Re: Prestazioni applicazione Visual C++

    Se non ti è chiaro, dai maggiori dettagli, non restare sul vago ...
    Ma non saprei come approfondire veramente. Semplicemente, avendo avuto remote esperienze con il C e poi passando a dotNet con C# per esigenze lavorative, non ho mai approfondito il discorso C++, il cui approccio mi intriga. Ma ripeto, il mio mondo riguarda l'interfacciamento di macchine (nel mio caso fresatrici, torni e centri di lavoro) con il mondo esterno nell'ottica di Industria 4.0, e finora non ho avuto problemi prestazionali.
    Semplicemente volevo allargare i miei orizzonti (impara l'arte e mettila da parte).
    Per esempio convertire tipi C in tipi dotNET e viceversa, o chiamare funzioni scritte in linguaggi dotNET tipo C#
    Capito, nel mio caso più che altro mi è capitato di avere a disposizione su alcuni device industriali delle DLL COM e di doverle utilizzare in dotNet con il marshalling.
  • Re: Prestazioni applicazione Visual C++

    C#, C++.NET, VB.NET HANNO LA STESSA potenza espressiva e LE STESSE PERFORMANCE.
    Non c'e' NESSUNA differenza tra i diversi linguaggi. E' SOLO una questione di esperienza pregressa.
    In .NET il linguaggio di riferimento e' C#, QUINDI conviene mantenersi su questo linguaggio. Il passaggio ad un'altro linguaggio E' ASSOLUTAMENTE INUTILE.
    La interoperabilita' di C# con le DLL e' ESATTAMENTE LA STESSA di "C++.NET".

    "C++.NET" NON E' "C++": le sintassi sono mooooolto simili, ma quello che genera il compilatore e' MOOOLTO diverso. C++.NET genera codice CL, lo stesso di C#, il compilatore "C++" genera codice BINARIO, che usa direttamente l'hardware (CPU).

    Se vogliamo, "C++.NET" e' anche piu' ""sporco"" del "C++" puro, perche' in .NET hai il garbage collector, mentre in 'C++" la memoria la devi gestire tu. Quindi hanno introdotto tutta una serie di estensioni al linguaggio originale per poter gestire questa "situazione".

    Nel tuo caso, AL PIU' di serve scrivere librerie in C (NON "C++"), con cui generare delle DLL da usare in C#.
    Ma nel 99.99999999% dei casi non ti serve nemmeno, perche' puoi fare TUTTO direttamente in C#

    Chiamare codice C# DA codice scritto in C oppure in C++ (NON "C++.NET") si dovrebbe poter fare, ma non mi ricordo di averlo visto fare, e se lo si fa,lo si fa per motvi ULTRA specifici.
  • Re: Prestazioni applicazione Visual C++

    Grazie Migliorabile, chiarissimo. Quindi C++ NET è managed esattamente come gli altri linguaggi NET. Si può dire che si fanno le cose allo stesso modo tribolando di più.
    E altri ambienti tipo il C++ Builder di Embarcadero invece come funzionano?
Devi accedere o registrarti per scrivere nel forum
9 risposte