Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Idrogeno verde in Europa: nuovi studi prevedono costi ben superiori alle aspettative
Idrogeno verde in Europa: nuovi studi prevedono costi ben superiori alle aspettative
Siamo tutti d'accordo: una eventuale diffusione massiccia di idrogeno verde, prodotto esclusivamente da fonti rinnovabili, risolverebbe tanti problemi. Ma siamo ancora lontanissimi da uno scenario del genere e c'entra anche l'Africa. Facciamo il punto della situazione sulla base di studi autorevoli, recentemente pubblicati.
Mario Kart World lancia Switch 2: la magia Nintendo ora in 4K
Mario Kart World lancia Switch 2: la magia Nintendo ora in 4K
Abbiamo provato esaustivamente due dei titoli di lancio della nuova console di Nintendo, il cui debutto è previsto per la settimana in corso. Mario Kart World e Nintendo Switch 2 Welcome Tour si rivelano sorprendenti per certi aspetti e anche perché esaltano alcune delle nuove caratteristiche di Switch 2
La rivoluzione dei dati in tempo reale è in arrivo. Un assaggio a Confluent Current 2025
La rivoluzione dei dati in tempo reale è in arrivo. Un assaggio a Confluent Current 2025
Siamo andati a Londra per partecipare a Current 2025, la conferenza annuale di Confluent. Il tema al centro dell'evento era l'elaborazione dei dati in tempo reale resa possibile da Apache Kafka, una piattaforma open source pensata proprio per questo. Si è parlato di come stia cambiando la gestione dei dati in tempo reale, del perché sia importante e di quali siano le prospettive per il futuro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-05-2009, 11: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, 11: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, 11: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, 12: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, 12: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, 13: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, 13: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, 14: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, 17: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, 19: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, 20: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, 20: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, 22: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, 13: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, 13:27   #15
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12790
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, 14: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


Idrogeno verde in Europa: nuovi studi prevedono costi ben superiori alle aspettative Idrogeno verde in Europa: nuovi studi prevedono ...
Mario Kart World lancia Switch 2: la magia Nintendo ora in 4K Mario Kart World lancia Switch 2: la magia Ninte...
La rivoluzione dei dati in tempo reale è in arrivo. Un assaggio a Confluent Current 2025 La rivoluzione dei dati in tempo reale è ...
SAP Sapphire 2025: con Joule l'intelligenza artificiale guida app, dati e decisioni SAP Sapphire 2025: con Joule l'intelligenza arti...
Dalle radio a transistor ai Micro LED: il viaggio di Hisense da Qingdao al mondo intero Dalle radio a transistor ai Micro LED: il viaggi...
Aruba collabora con Microsoft per l'offe...
Shimano Q'AUTO: cambio elettronico autom...
The Witcher 4: la demo mostrata all'Unre...
Pornhub e YouPorn oscurati in Francia: A...
Audio immersivo con altoparlanti posizio...
Mercedes G580 EQ in difficoltà: l'elettr...
CATL: la ricerca sulle batterie al litio...
SteelSeries Arctis Nova Pro Wireless: il...
iPhone 17, il display sarà finalm...
NIO prepara l'esordio in sette nuovi mer...
Revolut rivoluziona gli ATM: prelievi gr...
Dinamiche globali delle batterie per EV:...
Vulnerabilità sui router ASUS: la...
Google Pixel 9a e Chromebook 314: prezzo...
Scandalo Builder.ai: dietro all'AI in re...
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: 23:21.


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