2010-12-28 2 views
1

Je développe une application Rails 3 déployée sur Heroku et que j'aimerais optimiser. J'ai exploré différentes solutions telles que query_reviewer ou New Relic.Outil d'optimisation pour Rails 3 en développement?

Je ne pouvais pas faire fonctionner query_reviewer avec Rails 3.0.1 (j'ai aussi dû passer à MySql, car PostgreSQL n'est pas supporté). En ce qui concerne New Relic, il ressemble à un outil gratuit, mais il ne fonctionne qu'en production. Je dois d'abord améliorer de nombreuses requêtes de base de données lors du développement avant de pouvoir paramétrer l'application en production.

Donc, aucun de ces outils ne correspond à mes besoins.

Un conseil? Peut-être que je devrais juste compter sur les traces de journaux et réduire le nombre de requêtes SQL?

Répondre

1

Vous voulez savoir quelles activités ne sont pas absolument nécessaires et gagner un temps précieux si vous pouviez les "élaguer"? Pardonnez-moi d'être un répondeur à une voie, mais il y a un moyen facile de le faire, et il est facile à démontrer. Pendant que le code s'exécute lentement et que vous attendez, interrompez manuellement avec Ctrl-C ou autre, et examinez la trace de la pile. Fais le quelques fois. Tout ce que vous voyez sur plus d'une trace de pile est responsable d'un pourcentage important de temps, et cela n'a pas vraiment d'importance. Si c'est quelque chose que vous pouvez élaguer, il y aura beaucoup moins de travail à faire.

Si l'efficacité de cette méthode semble douteuse parce qu'elle est de basse technologie, c'est compréhensible, mais en fait elle peut rapidement trouver n'importe quel problème de profilage.

+0

Merci pour la réponse rapide :) Je vous remercie de la réponse, mais je voulais quelque chose de plus automatisé , car certaines demandes prennent trop de temps à appuyer sur Ctrl-C. – Jose

+0

@Jose: Si le programme se termine avant que j'aie l'occasion de l'interrompre, j'enveloppe une boucle autour de lui, pour qu'il fasse tout 10, 100 ou 1000 fois. Ensuite, je l'interromps. Après avoir trouvé et résolu les problèmes, j'enlève la boucle externe. Vous n'avez pas à vous soucier de répondre à une demande particulière, car vous frappez ce qui prend un grand pourcentage de temps. Si vous ne répondez pas à cette requête, c'est parce que cette requête n'est pas un problème de performance, et que le résultat est * le * problème de performances. C'est probablement quelque chose que tu n'attendais pas. –

Questions connexes