web-dev-qa-db-fra.com

Comment puis-je améliorer les performances perçues d'une application de bureau?

Nous avons créé une application Windows assez grande et malheureusement lente pour diverses étapes de planification financière.

J'essaie actuellement d'améliorer les performances de l'application en réduisant lentement le pourcentage après le pourcentage de temps d'attente. Cependant, il reste encore beaucoup de temps d'attente dans l'application.

Question Quels sont les meilleurs moyens d'améliorer les performances perçues? (dans une application généralement lente)

Exemples:

Si l'utilisateur ferme l'application, nous enregistrons actuellement certaines données et fermons la fenêtre de l'application après avoir enregistré les données. Serait-il préférable de rendre l'application visible avec la possibilité d'afficher une fenêtre d'erreur après une seconde environ?

Est-ce un avantage d'afficher immédiatement un curseur d'attente après qu'un utilisateur a commencé une interaction ou devrions-nous faire autre chose (bloquer l'interface utilisateur, afficher une animation d'attente?) Et pouvez-vous me fournir une référence afin que la direction puisse accepter?

4
Barfieldmv

Si "Beaucoup, beaucoup de petites et grandes choses sont lentes", je ne pense pas qu'une quantité d'animation améliorera considérablement leur expérience pour être honnête.

D'après le libellé de votre question, je suppose que les développeurs sont les mêmes personnes qui vont travailler sur ces améliorations de l'interface utilisateur. Si tel est le cas, vous feriez mieux de passer votre temps sur les améliorations réelles du code au moins jusqu'à ce que vous ayez une liste plus claire du recodage nécessaire. Si vous ne pouvez pas clairement identifier, hiérarchiser et planifier votre travail de révision, toutes ces améliorations de l'interface utilisateur ne sont qu'une perte de temps.

Je développe également des applications métier, donc je sais à quel point le remaniement de code est merdique, mais il suffit parfois de le rectifier. Tarder maintenant signifie souvent que cela ne se fera jamais: P

L'idée de masquer la fenêtre et d'exécuter le traitement en arrière-plan est également très risquée. Ils supposeront probablement que la transaction/le traitement est terminé et quitteront le poste de travail une fois qu'ils verront l'application se fermer.

Si cela se produit et qu'ils manquent un message d'erreur vital, il pourrait y avoir un enfer à payer .....

4
Permas

Eh bien, les performances perçues peuvent être considérablement améliorées. Chaque fois que vous atteignez un point où les données sont enregistrées ou récupérées et que vous faites patienter l'utilisateur, allez-y et montrez-leur l'écran suivant pendant cette opération. Vous auriez besoin d'une superposition "Chargement ..." rendant cet écran en lecture seule jusqu'à ce qu'il soit terminé.

Par exemple, l'écran "suivant" pourrait être les détails d'un compte. Vous pouvez afficher cet écran immédiatement avec tous les champs vides. Affichez ensuite cette superposition "Chargement ..." lorsque vous chargez les données de manière asynchrone.

La raison de cela est simple. Si l'utilisateur peut voir avec quoi il va interagir ensuite, il sera prêt dès qu'il sera disponible. Chaque fois qu'une tâche de longue durée entraîne l'affichage d'un nouvel ensemble d'informations, vous pouvez utiliser cette technique pour optimiser le flux de travail de l'utilisateur.

3
Steve Wortham

Si vous pouvez mettre en cache des informations au démarrage, ce qui rend l'application plus lente à démarrer mais plus rapide une fois en cours d'exécution, c'est mieux.

Aucune animation ne rendra quelque chose "perceptiblement" plus rapide. Les barres de progression sont plus utiles que les animations simples. Les choses qui prennent beaucoup de temps dans Windows, telles que la copie de fichiers massifs, combinent normalement des barres de progression et des animations.

De le blog de Jacob Neilsen sur les temps de réponse :

  • 0,1 seconde donne la sensation d'une réponse instantanée - c'est-à-dire que le résultat semble provenir de l'utilisateur et non de l'ordinateur. Ce niveau de réactivité est essentiel pour soutenir le sentiment de manipulation directe (la manipulation directe est l'une des principales techniques de l'interface graphique pour augmenter l'engagement et le contrôle des utilisateurs - pour en savoir plus, consultez notre séminaire sur les principes de conception d'interface).
  • 1 seconde maintient le flux de pensée de l'utilisateur sans faille. Les utilisateurs peuvent ressentir un retard et donc savoir que l'ordinateur génère le résultat, mais ils se sentent toujours en contrôle de l'expérience globale et qu'ils se déplacent librement plutôt que d'attendre sur l'ordinateur. Ce degré de réactivité est nécessaire pour une bonne navigation.
  • 10 secondes retiennent l'attention de l'utilisateur. De 1 à 10 secondes, les utilisateurs se sentent définitivement à la merci de l'ordinateur et souhaitent qu'il soit plus rapide, mais ils peuvent le gérer. Après 10 secondes, ils commencent à penser à d'autres choses, ce qui rend plus difficile de remettre leur cerveau sur la bonne voie une fois que l'ordinateur répond finalement.

Je vous suggère donc de dire à la direction que vous devez obtenir des temps de réponse inférieurs à 10 secondes.

2
icc97

Quelque chose de pratique pourrait être de diviser les tâches de longue haleine en "morceaux" plus petits - si cela est possible, bien sûr. Ensuite, vous pouvez mettre à jour l'interface utilisateur après le traitement de chaque "bloc".

En prenant un exemple de traitement d'image, vous pouvez indiquer à l'utilisateur que quelque chose se passe en mettant à jour chaque ligne de l'image au fur et à mesure qu'elle est générée (par exemple) en remplissant l'image de haut en bas, ou en montrant chaque étape d'un algorithme de suppression progressive de l'image afin que l'image devient de plus en plus aigu.

Ainsi, pour vos données financières, vous pouvez afficher les chiffres de chaque jour/semaine au fur et à mesure de leur traitement.

Bien que le temps global de l'opération ne change pas, l'utilisateur le perçoit comme étant plus rapide car il n'attend pas que toutes les données apparaissent avant de pouvoir poursuivre son travail. Ils peuvent examiner et analyser les données "jusqu'à présent".

Cela leur donne également la certitude que le processus va bientôt se terminer.

2
ChrisF

Je pense que vous devez d'abord savoir quoi est lent et ce qui semble lent à l'utilisateur. Cela peut être l'interface utilisateur du tout, mais cela ne peut également représenter que quelques tâches. La solution dépend de la partie lente de l'application.

Concernant "show wait animation": j'éviterais cela et j'essaierais plutôt de montrer des progrès raisonnables.

2
Mike L.

Cette question m'a fait rappeler un rapport de test d'utilisabilité que j'ai lu il y a des années, je ne me souviens pas où, peut-être quelque chose de Jakob Nielsen. L'étude était une comparaison entre plusieurs sites concurrents. Certains ont une meilleure convivialité que d'autres.
À la fin des séances, les utilisateurs devaient répondre à des questions et parmi eux, ils devaient évaluer le temps de réponse du site.
La partie intéressante est que les utilisateurs ont systématiquement évalué rapidement les sites avec une meilleure facilité d'utilisation, malgré le fait que le chronomètre racontait une histoire différente.

La morale est qu'une bonne convivialité augmente la perception de la vitesse des utilisateurs, peut-être parce qu'ils sentent qu'ils avancent tout le temps et pardonnent les attentes.

D'un autre côté, il n'y a pas de problème de performance que le temps ne guérisse pas. Le prochain ordinateur est plus rapide que celui disponible aujourd'hui.

Donc, vous voudrez peut-être appliquer une partie des ressources pour améliorer la convivialité et laisser loi de Moore résoudre une partie du manque de vitesse.

1
Juan Lanus