Domanda

Oggi il mio collega ha notato che quando si aggiunge un decimale a un indicatore di avanzamento si ha l'impressione che il programma funzioni più velocemente che senza. (cioè invece di 1,2,3 ... mostra 1, 1.2, 1.4, 1.6, ...) L'ho controllato e sono rimasto sorpreso di avere avuto la stessa impressione anche se sapevo che era falso.

Questo mi fa meravigliare: Quali altre cose ci sono per creare l'impressione di un'applicazione veloce?

Naturalmente il modo migliore è effettivamente rendere l'applicazione più veloce, ma da un punto di vista algoritmico spesso non c'è molto che puoi fare. Inoltre, penso che rendere un utente meno frustrato sia una buona cosa, anche se è più o meno un trucco psicologico.

È stato utile?

Soluzione

Questo effetto può essere molto drammatico: fare una quantità relativamente grande di lavoro per fornire agli utenti uno stato di avanzamento corretto e spesso aggiornando può ovviamente rallentare il tempo di esecuzione effettivo dell'applicazione (aggiornamenti dello schermo, calcoli necessari per la visualizzazione dei progressi, ecc.) pur dando all'utente la sensazione che ci vuole meno tempo.

Alcune delle cose che potresti fare nelle GUI:

  • assicurati che la tua applicazione rimanga reattiva (il ridimensionamento dei moduli rimane possibile, forse dai un pulsante di annullamento per l'operazione?) mentre è in corso l'elaborazione in background
  • essere molto coerenti nel mostrare messaggi di stato / cursori a clessidra in tutta l'applicazione
  • se hai qualcosa che si aggiorna durante un'operazione, assicurati che si aggiorni spesso (come la rappresentazione quasi ridicola di nomi di file e chiavi di registro durante un'installazione), o assicurati che ci sia un'opzione per farlo farlo per gli utenti a cui piace questo comportamento

Altri suggerimenti

Presenta prima alcuni risultati intermedi e interessanti. " Abbiamo trovato 2.359 zetuyl corrispondenti alla tua richiesta, stiamo solo calcolando il loro valore futuro " ;.

Ho visto che i sistemi di prenotazione dei trasporti fanno questo genere di cose abbastanza bene.

Mostrare dettagli (come i nomi dei file che vengono copiati in un processo di installazione) può spesso far sembrare che le cose stiano andando più veloci perché c'è un'attività costante e evidente (al contrario di una barra di avanzamento che si muove lentamente).

Se il tuo algoritmo è tale da generare un elenco di risultati e hai un modo per visualizzare i risultati man mano che vengono generati (al contrario di tutti contemporaneamente alla fine), fallo - prima l'utente ha qualcosa altro da guardare oltre a un filatore, meglio è.

Consenti all'utente di fare qualcos'altro, mentre la tua applicazione sta elaborando dati o aspettando un risultato. Nell'ambito dell'applicazione è possibile consentire di perfezionare una query di ricerca o raccogliere informazioni per la preparazione dei passaggi successivi. O semplicemente presentare qualche altro "lavoro" necessario per fare o solo alcuni suggerimenti, documentazione, statistiche, intrattenimento ..

Usa una di quelle barre di avanzamento animate che sembrano fare qualcosa anche quando non stanno avanzando. Inoltre, come diceva peSHIr - stampa ogni nome di file che copi e lo aggiorni molto velocemente - potresti persino falsificarlo scorrendo una grande serie di stringhe N volte al secondo.

Ho letto da qualche parte che se il processo sembra accelerare, sembra essere più veloce di quando procede a un ritmo costante. Non riesco a trovare il riferimento in questo momento, ma dovrebbe essere semplice da implementare.

(10 minuti dopo ...)

Un'ulteriore occhiata alla corsia di Google ha portato alla luce i seguenti riferimenti:

http://www.azarask.in/blog/post/hacking- memoria / http://blogs.msdn.com/time/

Ecco un articolo su " Esprimere il tempo nell'interfaccia utente " e percezione dell'utente del tempo. Non so se è esattamente quello che ti aspetti come risposta, ma vale sicuramente la pena leggere.

Aggiungi un thread sleep nei punti critici. Con ogni versione di passaggio, ridurre il ritardo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top