2009-12-03 13 views
0

Donc, j'ai une configuration où deux imacs, imac_1 et imac_2, sont connectés via firewire. imac_1 envoie des informations de débogage à imac_2 et sur imac_2 j'ai un programme en C++ qui capture les informations de débogage (voir illustration ci-dessous)écrire à la question de l'interface graphique

Maintenant le problème est que si j'écris les informations de débogage à l'interface graphique (créé en utilisant QT) directement c'est très lent, par lent je veux dire que l'interface graphique prend du temps pour charger les données. Donc ce que j'ai fait était d'écrire les informations de débogage dans un tampon, puis de vider ce tampon dans l'interface graphique, mais c'était aussi lent parce que l'interface graphique prend le temps de charger les données.

Je pensais écrire les informations de débogage dans un fichier, puis le charger dans l'interface graphique. Donc, je voudrais charger les 10 000 premières lignes dans l'interface graphique, puis lorsque l'utilisateur défile vers le bas, je voudrais charger les 10 000 prochaines lignes.

imac_1 (émetteur) ---> FireWire (moyenne) -> imac_2 (récepteur)

des idées ou des suggestions ????

J'utilise: Mac OS X, XCode, imac

+0

Sans beaucoup plus d'informations, je ne peux même pas concevoir une réponse satisfaisante. Avez-vous une idée de la lenteur de l'interface graphique? S'il est lent à traiter les données de deux façons, il ne sera probablement pas plus rapide avec un tiers. –

+0

La raison pour laquelle je pense que le gui est lent est à cause de l'overhead gui. Je pense que je n'ai pas fait un bon travail pour expliquer mon problème, mais qu'est-ce que vous aimeriez savoir d'autre? Merci. – infinitloop

Répondre

1

Il semble que votre problème n'a rien à voir avec les deux ordinateurs de communication, mais peut plutôt être votre application graphique.

Je vous suggère d'essayer l'approche de fichier que vous mentionnez, ne serait-ce que pour isoler le composant réseau de la discussion. Ensuite, travaillez à rendre votre interface graphique plus rapide.

Si vous ajoutez les lignes de texte une à la fois, cela peut expliquer une partie de la lenteur, mais 10 000 lignes ne sont pas vraiment si nombreuses.

D'autres approches peuvent inclure la désactivation du redessin ou quelque chose de similaire pendant le chargement dans le fichier texte.

+0

++ désactiver le redessin pendant que le chargement est une grande victoire dans d'autres contextes. Vous ne voulez pas qu'il passe par un cycle entier invalider/peindre sur chacune des lignes 10k. –

+0

J'ai fait quelques graphiques de l'écriture au fichier vs gui et il semble que l'écriture dans le fichier est plus rapide. Mais maintenant le problème est de savoir quand le GUI doit commencer à charger les données du fichier après avoir démarré le programme. Parce que le fichier ne sera pas mis à jour dès que le programme démarre. merci – infinitloop

+0

Je pense à démarrer un thread à partir du thread principal qui sera responsable de la substance gui, comme la création et le chargement de données. – infinitloop