Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-05-2009, 12:15   #1
ironman80
Junior Member
 
Iscritto dal: May 2009
Messaggi: 9
[C] AIUTO, forte calo prestazioni con Vista

Salve, uso Ubuntu per imparare a programmare col C, in particolare programmi di number-crunching... Ho provato a compilare un programma per la trasmissione termica che usa il metodo delle differenze finite: il mio problema e' che compilando lo stesso programma con MinGW, la sua esecuzione sotto Vista e' lentissima, in Ubuntu (compilato con gcc) completa il lavoro in 16 secondi, mentre in Vista in 30... Anche con l'utilizzo di wine per lanciare l'eseguibile win32 sotto linux il calcolo viene completato in 16 secondi. Ho un portatile con cpu Intel Core2 Duo T9400 a 2.53GHz, ho gia controllato che non sia impostata la modalita' di risparmio energetico ecc... Lo stesso programma su un vecchio athlon a 2GHz con WinXp completa il lavoro piu' velocemente (in 25sec) ! Ho inoltre provato anche la versione gratuita di Visual C++ Express ottenendo lo stesso risultato scoraggiante (e anche peggio). Com'e' possibile? Sara' dovuto all'utilizzo di qualche libreria dinamica? Il sorgente in se' non si appoggia ad alcuna libreria, tranne quelle standard del C naturalmente. Magari con gcc le librerie vengono incluse staticamente e con MinGW dinamicamente? Ringrazio chiunque sappia darmi qualche risposta/consiglio.
Ps. ho appena provato ad eseguire sotto Ubuntu (con Wine) il programma compilato con VS, e' anche piu' veloce della versione compilata con GCC, completa il lavoro in meta' tempo rispetto all'esecuzione sotto Vista!
ironman80 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 12:26   #2
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Per avere una comparazione adeguata dovresti usare un compilatore altrettanto efficiente sui due sistemi. Inoltre a seconda dell'implementazione della standard library (e dell'uso che ne fai) i risultati potrebbero variare. Infine i vari anti* presenti su windows potrebbero rallentare l'allocazione/deallocazione di memoria, quindi se fai abbondante uso di malloc e free, questa potrebbe essere una causa.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 12:54   #3
ironman80
Junior Member
 
Iscritto dal: May 2009
Messaggi: 9
Grazie, in effetti faccio ampio uso di malloc e free. Tuttavia mi sembra strano che lo stesso eseguibile sotto Xp e Linux sia il doppio piu' veloce che sotto Vista. Ho fatto un'ulteriore prova, sul desktop con Xp ho preparato una virtual machine con Vista, e in questo caso le prestazioni restano paragonabili a quelle del host con Xp (solo il 10% piu' lento)! Credo di aver fatto una comparazione adeguata lanciando lo stesso eseguibile sotto Vista, Xp e Ubuntu, e casomai tra i tre dovrebbe essere svantaggiato Ubuntu. Quindi Vista gestisce diversamente l'allocazione della memoria? E provando Vista in una VM con host Xp, la gestione forse viene passata direttamente a quest'ultimo e per questo non si riscontra un tale calo nelle prestazioni?
ironman80 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 13:22   #4
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Mi è appena venuta in mente una cosa molto buffa che avevo riscontrato tempo fa occupandomi di alcune applicazioni per cui le performance erano importantissime: un'elaborazione che normalmente richiedeva 16ms su Vista richiedeva oltre 2s. Anche in quella circostanza c'erano molte malloc/free etc, e avevo osservato che eseguendo come amministratore le performance tornavano ai livelli previsti. Bizzarro, non ho mai capito il perché e non ho perso tempo a indagare, ma magari può esserti d'aiuto.
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 13:48   #5
ironman80
Junior Member
 
Iscritto dal: May 2009
Messaggi: 9
Avviare come amministratore è stata una delle prime cose che ho provato, ma purtroppo nel mio caso non c'è stato alcun miglioramento.
ironman80 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 14:10   #6
!k-0t1c!
Member
 
Iscritto dal: Jul 2008
Messaggi: 237
Prova ad eseguire qualche benchmark sintetico su Vista (tipo Sandra o Passmark) e vedi come sta andando la CPU. Verifica che i risultati non si discostino molto da quelli di riferimento per il tuo setup. E magari verifica anche la RAM
!k-0t1c! è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 14:22   #7
ironman80
Junior Member
 
Iscritto dal: May 2009
Messaggi: 9
Ho fatto anche questa verifica, col superpi, 1M in 18 secondi, e tempo fa ho provato con Sandra e 3DMark ed era tutto ok. Ho testato la ram con memtest e non da errori, e durante l'esecuzione dei programmi ho verificato con cpuz che la frequenza della cpu sia effettivamente quella massima.
ironman80 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 15:16   #8
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Nedmalloc

Questo è 120x più veloce del memory allocator di Windows

Potresti provare ad usarlo (tanto è facilissimo, basta sostituire il nome delle funzioni) in maniera di fare un confronto alla pari tra Vista e Ubuntu.

Ora cambia completamente il codice del malloc, ed è ovvio che i risultati siano strani...

PS: hai provato in Release? Malloc di windows soffre molto il debug.
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 18:17   #9
ironman80
Junior Member
 
Iscritto dal: May 2009
Messaggi: 9
Si, ho fatto tutto in release. Sto tentando di provare nedmalloc, ho messo tutti i file nella directory del mio sorgente, ho inserito un #include "nedmalloc.c", come nel file di esempio, ho sostituito tutti i malloc con nedmalloc e i free con nedfree, ma compilando in VS mi dice "nedmalloc: identificatore non trovato". Scusate, sono novellino, dove sbaglio?
ironman80 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 20:05   #10
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Uhmno... devi includere nei tuoi file nedmalloc.h, e quindi aggiungere al progetto nedmalloc.c.
Se lo compili come C++ poi devi usare il namespace nedalloc...
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 21:30   #11
ironman80
Junior Member
 
Iscritto dal: May 2009
Messaggi: 9
Provato co MSVC, funziona! Il tempo di calcolo si è ridotto del 50%, da 29 a 14 secondi! Prima ho provato anche con Hoard, ottenendo gli stessi risultati. Tuttavia non riesco a farlo funzionare da MinGW (uso NetBeans come IDE), ma solo dal MSVC. In particolare mi da errore su tutti i namespace del nedmalloc.h.
ironman80 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 21:45   #12
ironman80
Junior Member
 
Iscritto dal: May 2009
Messaggi: 9
Risolto il problema dei namespace modificando l'estensione del file in .cpp. Tuttavia non compila ancora, mi da "undefined reference to `_InterlockedExchange' " che compare nel malloc.c.h, Qualche suggerimento su come risolvere?
Ps. Grazie a tutti per il prezioso aiuto!
ironman80 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2009, 23:22   #13
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Non ti so dire come farlo funzionare... io mi son limitato ad inserirlo ed ha funzionato.
Magari, prova a lasciarlo .c e includerlo dentro "extern "C""

Cmq buono che migliora così tanto la situazione... chissà perchè nessuno sostituisce mai l'allocator di windows dato che si hanno miglioramenti "for free"...

Ps: il fatto che un allocator più performante ti dà tale vantaggio potrebbe voler dire che il tuo codice spreca malloc e frees... hai provato ad utilizzare del pooling, per riutilizzare la memoria?
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 14:16   #14
ironman80
Junior Member
 
Iscritto dal: May 2009
Messaggi: 9
Innanzitutto vi ringrazio per l'aiuto! Ho provato ad utilizzare nedmalloc in gcc e funzionava a patto di compilare con l'opzione -pthread. In MinGW pthread non c'è, per questo non funzionava; ho provato poi con dlmalloc, funziona senza problemi in MinGW ed è il più semplice da implementare, è sufficiente includere nel progetto malloc.c e malloc.h. Dlmalloc funziona anche in VS, tuttavia alla terminazione del programma dà l'errore "this application has requested the runtime...", probabilmente va in conflitto col malloc della libreria msvcrt... Alla fine la soluzione più rapida e trasparente per VS si è rivelata Hoard, mentre per MinGW dlmalloc.
ironman80 è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 14:27   #15
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12945
Che versione usi di MinGW? La versione stabile usa ancora gcc 3.4.5... quella in DEV mi pare sia la 4.3.x...

In ogni caso tenete a mente che è un porting, e per cui dubito sia molto ottimizzato per Win.

Usa il compilatore della Microsoft
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2009, 15:14   #16
ironman80
Junior Member
 
Iscritto dal: May 2009
Messaggi: 9
Uso la stable. Si, tra un po' migrerò a VS perché comincierò a smanettare con CUDA, che sotto Windows è supportato esclusivamente da VS. Cmq contemporaneamente cercerò di farlo funzionare sotto Jaunty con l'accoppiata gcc+Netbeans, non appena alla Nvidia forniranno dei driver decenti non-beta che mi danno non pochi problemi sul mio portatile...
ironman80 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Arianespace potrebbe lanciare il primo r...
Google Pixel 10a disponibile al prezzo m...
Microsoft Copilot nei guai: email riserv...
AOC a 399€ su Amazon: QD-OLED 240 Hz e 0...
La Cina ha recuperato dal mare il primo ...
Boeing CST-100 Starliner: la NASA rende ...
hiop e TaDa uniscono le forze per trasfo...
Thermal Grizzly mostra il Ryzen 7 9850X3...
AMD Ryzen 'Olympic Ridge' Zen 6 per desk...
Donald Trump renderà pubbliche in...
Prezzo mai visto da mesi: ECOVACS DEEBOT...
Non solo S26, Samsung sta per lanciare a...
Windows 11 avrà a breve uno Speed...
Ask Intel: l'assistente IA che ti aiuta ...
Nasce Freedom.gov: il portale USA per ag...
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: 05:09.


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