2010-07-12 15 views
8

Per i lettori regolari: La saga ™ continua ...Quali strumenti posso utilizzare per determinare i requisiti hardware della mia applicazione?

mia app funziona benissimo sulla mia macchina di sviluppo - che è stato acquistato (5 anni fa) come un discreto impianto di gioco. Come tale, è a 64 bit, ha una velocità di clock di 2,2 GHz e ha 2 GB di memoria.

Le macchine al lavoro, tuttavia, sono computer da ufficio Dell con problemi di serie e sono davvero faticoso persino per avviare la mia app, per non parlare di eseguirla.

(Spiegazione ... Posso immaginare persone che mi urlano: "Cosa diavolo stai facendo per richiedere una specifica del genere?" Bene, sto facendo un sacco di analisi delle immagini in tempo reale e generazione di audio. Quindi lì.)

Il nostro team ha il budget per acquistare un laptop dedicato (deve essere portatile) per eseguirlo. Quindi ora ho il compito di generare una specifica minima richiesta.

Quali strumenti posso utilizzare per determinare le specifiche più basse in grado di gestire comodamente la mia app?

Aggiornamento: Le risposte finora, sebbene utili, si concentrano maggiormente sulle alternative alla profilazione. Quindi ho messo una taglia per vedere se c'è qualche software che farà questo genere di cose.

+0

Si può sempre provare a ottimizzare un po 'il codice in modo che funzioni su una macchina con specifiche inferiori. In caso contrario dovrai solo testare la tua app su varie macchine candidate per avere un'idea di ciò che ti serve per ottenere prestazioni accettabili. –

+0

Grazie Paul. Ho preso l'ottimizzazione per quanto le mie capacità di sviluppo limitate permetteranno. (Se sei curioso, sentiti libero di controllare la fonte. Sarei molto grato per qualsiasi aiuto!) L'ultima opzione è il mio backup, ma dal momento che stiamo acquistando una macchina dedicata, sarebbe bello ottenerla giusto la prima volta –

+1

Non c'è da stupirsi ... i PC standard Dell per l'ufficio eseguono Celeron con ram lento. Se funziona bene con le specifiche sopra, non puoi usarlo come base? Ovviamente un laptop avrà problemi di riscaldamento se stai eseguendo calcoli pesanti su di esso per lunghi periodi di tempo, ma l'hardware è piuttosto economico al giorno d'oggi. Basta non ottenere un modello di risparmio energetico. ;) – cbednarski

risposta

5

Hai accesso a un buon profiler? Penso che varrebbe la pena capire i colli di bottiglia delle prestazioni nella tua applicazione. Se si scopre che la tua applicazione è vincolata alla CPU, ovviamente dovrai prendere in considerazione la possibilità di splurgare su un processore high-end. L'applicazione è multi-thread? In tal caso, la tua applicazione si avvale di più processori o viene serializzata a causa della sincronizzazione?

Se l'applicazione è vincolata all'IO, forse si dovrebbe invece prendere in considerazione l'acquisizione di un'unità SSD.

Forse l'app sta spendendo troppo tempo nel cercapersone? ecc ...

Se si ha accesso a Visual Studio 2010 Ultimate, si consiglia di controllare lo Concurrency Profiler. Ti aiuterà a visualizzare ciò che accade nel tuo programma e identificare i colli di bottiglia delle prestazioni. Ti mostrerà dove passi la tua app: attesa su IO, gestione della memoria, ecc. Anche se questo strumento non ti dirà quali sono i requisiti hardware minimi, dovrebbe darti una buona idea di quali miglioramenti dell'hardware aiuteranno la tua app ha un rendimento migliore. Se non si dispone di VS2010, è probabile che si possa condurre un'analisi simile con qualsiasi buon profiler. La cosa interessante di Concurrency Visualizer è che si concentra sull'esposizione di problemi di prestazioni concomitanti e multi-thread.

+0

Attualmente ho solo Professional, ma se riesco ad aggiornarlo, lo prendo seriamente in considerazione. Gli strumenti di profilazione delle prestazioni sembrano davvero utili. Non credo che potresti raccomandare altri profiler? –

+0

Ciao Tom, Mi auguro che l'aggiornamento non sia stato così costoso :(È davvero un peccato Una grande opzione gratuita è "xperf" e viene fornita con gli strumenti di analisi delle prestazioni di Windows (disponibile qui: http: // msdn .microsoft.com/it/us/performance/cc825801.aspx). xperf è incredibilmente potente, ma ha una curva di apprendimento ripida, non tiene la tua mano tanto quanto i profiler VS. Sembra anche che ci sia un Profiler open source chiamato "Sleepy", disponibile qui http://www.codersnotes.com/sleepy/, ma non l'ho mai usato. – Matt

1

Niente è meglio di test del mondo reale ...

provare a eseguire la vostra applicazione su una varietà di hardware e venire con un minimo consigliato sulla base di vostra percezione di prestazioni accettabili.

Nota: spesso vi è una grande differenza tra i requisiti hardware minimi assoluti e i requisiti minimi raccomandati raccomandati (che suona come è quello che si sta veramente cercando).

0

Un'opzione consiste nel creare una serie di macchine virtuali con diverse configurazioni di sistema e provare l'app in ciascuna (si vorrà farlo su una macchina ad alte prestazioni). In questo modo, puoi regolare la quantità di memoria della VM, il tipo di CPU, ecc. E simulare il test del software su una varietà di sistemi. Durante il test, puoi utilizzare il Task Manager di Windows per vedere quanta parte della CPU e della memoria dell'host stai utilizzando. Per un'esperienza confortevole, ti consigliamo di inserire la tua app nella memoria fisica il più possibile (più circa 1-1,5 GB per il sistema operativo e altri servizi in background).

Inoltre, tieni presente che la tua app ha funzionalità che richiedono il supporto hardware (DirectX 11, CUDA, ecc.) E assicurati di includerla nei tuoi requisiti hardware.

0

Dalle brevi informazioni non sembra che il tuo PC sia una specifica particolarmente elevata. Quali specifiche sono le macchine Dell che hai visto correre lento?

Proverei un altro PC nel caso in cui le macchine "di lavoro" siano solo build software scadenti (indovinando i driver del controller del disco XP XP standard ecc.).

In generale, non suggerirei di seguire la rotta della VM in quanto è davvero utile per limitare l'utilizzo della RAM. Se tuttavia è necessario verificare i SO/Service Pack alternativi, le macchine virtuali sono una buona soluzione.

Infine, dici che l'app è lenta da caricare, che cosa sta facendo al caricamento? Potrebbe essere un'idea esaminare i monitor delle prestazioni per vedere se è limitato il disco, la RAM o la CPU. Usa Google per trovare contatori utili per il monitoraggio di ciascuno.

+0

Per quanto riguarda le specifiche, il mio PC di sviluppo non è quello standard elevato per gli standard moderni: AMD64 dual core che funziona a 2,21 GHz con 2 GB di memoria DDR2 (cosa che presumo essere). I computer di lavoro sembrano essere uniformemente la metà di questo: un singolo core a 32 bit in esecuzione a circa 1 GHz e solitamente con 1 GB di RAM. –

+0

CPU da 1 GHz in una macchina desktop sta per essere molto vecchio, immagino molto probabilmente un Pentium 3 che probabilmente non è nemmeno in grado di visualizzare le più moderne pagine Web Flash. L'unica cosa che verificherei è usare il monitor delle prestazioni se l'utilizzo della RAM è elevato e quindi si sta iniziando a scambiare sulle macchine da 1 GB di RAM. In realtà 1 GB di RAM è un minimo adatto per un'applicazione non specialistica, quindi dovresti provare a farcela. Sulla CPU basta andare per la CPU (e gli equivalenti Intel) come minimo, guarda Toms Hardware per calcolare gli equivalenti in Intel, cellulare ecc. –

+0

O un netbook PC. – Arafangion

0

Perdonami per aver affermato il b ***** g ovvio, ma:

utilizzare il software per controllare i requisiti hardware per il software.

Non capisco perché le specifiche del computer di sviluppo non siano semplicemente le specifiche richieste per il laptop che si propone di acquistare. Ma se per qualche motivo non è abbastanza buono, esegui il tuo software su hardware con altre specifiche. Ad esempio, potresti prelevare 1 GB di RAM dalla tua macchina di sviluppo per vedere come vanno le cose con meno memoria disponibile.

Esiste un'enorme quantità di software di benchmarking disponibile per tutti i tipi di attività. Ad esempio LINPACK è molto usato per il benchmarking dei supercomputer. Il difetto in tutti questi benchmark preconfezionati, e in generale nell'approccio, è che forniscono solo una buona informazione su come un computer esegue il benchmark. Trasformare i risultati dei benchmark in previsioni di prestazioni dell'hardware con il tuo software è più un'arte che una scienza. Nel mondo del supercomputer le organizzazioni valutano le proprie applicazioni chiave su nuove piattaforme prima dell'acquisto.