Come accertare dagli utenti se l'ottimizzazione delle prestazioni ha avuto l'effetto desiderato [chiuso]

-1

Quindi hai apportato alcune modifiche al codice che, si spera, potrebbero accelerare alcune parti di un'applicazione. Ma c'è solo un problema: non sai come si esibirà in diretta.

Diverse reti, macchine diverse, memoria diversa, configurazione diversa, diverse ore del giorno, utenti diversi, diversi carichi del server ecc. ecc.

...

(a) Chiedi loro se quel bit dell'applicazione è diventato più veloce?

(b) Chiedi loro di monitorare quella parte dell'applicazione?

Oppure ...

(c) Gli chiedi solo di vedere se notano differenze nell'applicazione in generale? Dopo tutto, non puoi essere sicuro al 100% di non aver influito su qualcos'altro.

Ognuno di questi approcci sembra avere problemi (lo so come li ho provati tutti):

(a) Stai facendo una domanda principale. Prima che una soluzione del genere vada alla vita, c'è uno scenario di vestiti nuovi dell'imperatore. Lo sviluppatore ritiene che il codice dovrebbe essere più veloce, quindi c'è una sorta di crociata per convincere tutti a crederlo prima che venga pubblicato. Quindi ... va in diretta. Alcuni dicono che è più veloce, altri leggermente più lento e altri più o meno lo stesso. Che cosa allora?

(b) Ancora: alcuni dicono che è più veloce, altri leggermente più lento e altri più o meno lo stesso. Che cosa allora?

(c) Non stai più ponendo una domanda principale, ma inizi a essere colpito da un intero torrente di problemi che le persone conoscono da mesi (forse anni), ma ora hai aperto il vaso di Pandora. Come puoi essere sicuro se questi (se ci sono) nuovi problemi?

O forse dovrei fare domande completamente diverse. Qualche idea?

Modifica

Senza dubbio ci sono processi che portano a questo punto che potrebbero potenzialmente essere migliorati. Ma il nocciolo della domanda è questo:

Il cambiamento è stato testato ed è stato pubblicato. Hai una miriade di statistiche per dimostrare che le modifiche dovrebbero migliorare le prestazioni. Il tuo capo ha restituito una volta le statistiche, ma ora vuole assicurarsi che gli utenti siano felici prima di firmare l'uscita. Quali domande dovresti chiedere agli utenti?

    
posta Robbie Dee 17.05.2013 - 11:08
fonte

5 risposte

4

Quali domande dovresti chiedere agli utenti?

Here is the next version of our program. Please report any unexpected behavior.

A meno che i tuoi utenti non utilizzino i cronometri o il tuo programma abbia dei processi molto lunghi, è improbabile che gli utenti possano fornire altro che feedback soggettivo. E per l'ottimizzazione sarei più preoccupato per il comportamento non catturato dai test automatici rispetto a un aumento di velocità irregolare.

    
risposta data 17.05.2013 - 16:30
fonte
7

Dovresti preoccuparti dei dati piuttosto che della soggettività. Quindi dovresti monitorare / misurare / profilare per determinare i miglioramenti. Quel monitoraggio deve essere sia negli ambienti di produzione che di test (e dev).

Idealmente, non dovresti ottimizzare nulla finché dopo non vedi i risultati delle prestazioni. Altrimenti si rischia una "ottimizzazione prematura" che non migliora nulla di significativo e forse è stato uno spreco di tempo e denaro. È molto facile vedere un pezzo di codice e pensare: "Questo è terribile, non funzionerà mai bene". solo per scoprire in seguito che viene eseguito solo l'1% delle volte e il vero collo di bottiglia è da qualche altra parte.

    
risposta data 17.05.2013 - 19:02
fonte
3

Aggiungi un interruttore di configurazione per scegliere tra codifica vecchia e nuova e inserirla nel sistema di produzione. Eseguila una settimana con ogni impostazione, misura e confronta.

    
risposta data 17.05.2013 - 23:32
fonte
1

Non puoi misurare le prestazioni in un ambiente di sviluppo, prima e dopo le correzioni? Se è più veloce del 20%, di solito è sicuro assumere che sarà anche il 20% più veloce nella produzione.

Di solito dovresti riuscire a scoprire facilmente i principali colli di bottiglia nella tua infrastruttura dalle esperienze passate (o dall'esperienza di altri sviluppatori) e tenerne conto al momento della profilazione.

    
risposta data 17.05.2013 - 18:30
fonte
1

Il tuo problema qui è che stai coinvolgendo utenti come tester, non farlo.

La tua domanda è abbastanza valida - come funziona un'app quando arriva al "mondo reale", con CPU del mondo reale, carico utente, volumi di dati ... ma una volta che fai questa domanda, devi ottenere qualche obiettivo i dati sulle prestazioni e gli utenti non saranno mai molto utili per questi.

Quindi è necessario emulare il carico dell'utente, in un QA o in un ambiente di test delle prestazioni. Ottieni una rappresentazione dell'ambiente dell'utente finale, ottieni alcuni strumenti di test automatici che possono martellare il tuo sistema come se 10 o 10.000 utenti lo stessero utilizzando, popolando i set di dati con masse di dati fittizi. Quindi puoi eseguire i test e ottenere dati significativi. Quindi puoi anche rieseguire i tuoi test con una nuova versione del tuo sistema e vedere quali differenze ci sono.

    
risposta data 20.05.2013 - 11:58
fonte

Leggi altre domande sui tag