51 votes

Utilisation des ressources de google Go par rapport à Python et Java sur Appengine

Est-ce que google Go utilisera moins de ressources que Python et Java sur Appengine ? Les temps de démarrage des instances de go sont-ils plus rapides que ceux de Java et de Python ?

Le programme Go est-il téléchargé sous forme de binaires ou de code source et, s'il est téléchargé sous forme de code source, est-il compilé une seule fois ou à chaque démarrage de l'instance ?

En d'autres termes : Est-ce que je bénéficierai de l'utilisation de Go in app engine d'un point de vue financier ? (en tenant compte uniquement du coût des ressources du moteur d'application et non du temps de développement).

45voto

proppy Points 6747

Est-ce que google Go utilisera moins de ressources que Python et Java sur Appengine ? Les temps de démarrage des instances de Go sont-ils plus rapides que ceux de Java et de Python ? de Java et Python ?

Oui, les instances Go ont une mémoire plus faible que Python et Java (< 10 MB).

Oui, les instances Go démarrent plus rapidement que les équivalents Java et Python car le runtime n'a besoin de lire qu'un seul fichier exécutable pour démarrer une application.

De plus, même si elles sont au départ monofilaires, les instances de Go traitent les requêtes entrantes de manière concurrente en utilisant des goroutines, ce qui signifie que si une goroutine attend une entrée/sortie, une autre peut traiter une requête entrante.

Le programme de go est-il téléchargé sous forme de binaires ou de code source et si c'est le cas et s'il est téléchargé en tant que code source, est-il compilé une seule fois ou à chaque démarrage ?

Le programme Go est téléchargé sous forme de code source et compilé (une fois) en binaire lors du déploiement d'une nouvelle version de votre application à l'aide du SDK.

En d'autres termes : Est-ce que je bénéficierai de l'utilisation de Go dans le moteur d'application du point de vue des coûts ? coût ?

Le runtime Go a définitivement un avantage lorsqu'il s'agit du rapport performance/prix, cependant il n'affecte pas la tarification des autres quotas d'API comme décrit par la réponse de Peter.

21voto

Peter Recore Points 11208

Le coût des instances ne représente qu'une partie du coût de votre application. Je n'utilise pour l'instant que le runtime Java, je ne sais donc pas à quel point les choses seraient plus ou moins efficaces avec Python ou Go, mais je n'imagine pas qu'il y ait des ordres de grandeur différents. Je sais que les instances ne sont pas le seul coût à prendre en compte. En fonction de ce que fait votre application, vous pouvez trouver que les coûts d'API ou de stockage sont plus importants que les différences mineures entre les runtimes. Tous les coûts d'API seront les mêmes, quel que soit le runtime utilisé.

La langue "pourrait" affecter ces coûts :

  • Instances frontales à la demande
  • Instances frontales réservées
  • Instances sauvegardées

Coûts indépendants de la langue :

  • Datastore à haute réplication (par gig stocké)
  • Bande passante sortante (par gig)
  • Datastore API (par ops)
  • Prix de l'API Blobstore (par giga)
  • Email API (par email)
  • XMPP API (par stanza)
  • Channel API (par canal)

14voto

stickfigure Points 4049

La question n'est pas pertinente.

L'empreinte mémoire minimale d'une application Go est inférieure à celle d'une application Python, qui est inférieure à celle d'une application Java. Elles ont toutes le même coût par instance, donc à moins que votre application soit plus performante avec un espace de tas supplémentaire, cette question n'est pas pertinente.

Le temps de démarrage de Go est inférieur au temps de démarrage de Python qui est inférieur au temps de démarrage de Java. À moins que votre application n'ait une raison particulière de passer par de nombreux cycles de démarrage/arrêt d'instance, cela n'est pas pertinent du point de vue des coûts. D'un autre côté, si vous avez une application qui est exceptionnellement éclaté dans des périodes de temps très courtes le temps de démarrage peut être un avantage.

Comme l'ont mentionné d'autres réponses, de nombreux coûts sont identiques entre toutes les plateformes - en particulier, les opérations du datastore. Dans la mesure où Go vs Python vs Java aura un effet sur la facture des heures d'instance, il est lié à :

  • Votre application génère-t-elle beaucoup de déchets ? Pour de nombreuses applications, le plus gros coût de calcul est le garbage collector. Java a de loin le GC le plus mature et les opérations de base comme la sérialisation sont nettement plus rapides qu'avec Python. Le garbage collector de Go semble être un sujet de développement permanent, mais d'après des recherches rapides sur le web, il ne semble pas être un sujet de fierté (encore).

  • Votre application est-elle gourmande en ressources informatiques ? Java (compilé en JIT) et Go sont probablement meilleurs que Python pour les opérations mathématiques.

Ces trois langues ont leurs vertus et leurs défauts. Dans la plupart des cas, il est préférable de laisser les autres questions dominer. Quelle est la langue avec laquelle vous aimez le plus travailler ?

1voto

909 Niklas Points 5350

Il s'agit probablement plus de la manière dont vous allouez les ressources que de votre choix de langue. J'ai lu que GAE a été conçu pour être agnostique en termes de langage, il n'y a donc probablement aucun avantage intégré pour un langage, mais vous pouvez obtenir un avantage en choisissant le langage avec lequel vous êtes à l'aise et motivé. J'utilise python et ce qui a rendu mon déploiement beaucoup plus rentable a été la mise à niveau vers python 2.7 et vous ne pouvez effectuer cette mise à niveau que si vous utilisez le sous-ensemble correct de 2.6, ce qui est bien. Ainsi, si vous choisissez un langage avec lequel vous êtes à l'aise, il est probable que vous tirerez un avantage de votre capacité à utiliser le langage plutôt que du combo langage + environnement lui-même.

En bref, je recommanderais python mais c'est le seul langage de moteur d'application que j'ai essayé et c'est mon choix même si je connais assez bien Java le code d'un projet sera beaucoup plus compact en utilisant mon langage préféré python.

Mes applications sont petit a moyen et ils ne coûtent rien :

enter image description here

0voto

FoxyLad Points 694

Je n'ai pas utilisé Go, mais je soupçonne fortement qu'il chargerait et exécuterait les instances beaucoup plus rapidement, et utiliserait moins de mémoire uniquement parce qu'il est compilé. De manière anecdotique, je crois que Python est plus réactif que Java, au moins en ce qui concerne le temps de démarrage des instances.

Les temps de chargement/démarrage des instances sont importants car lorsque votre instance reçoit plus de demandes qu'elle ne peut en traiter, elle en crée une autre. Cette requête prend alors beaucoup plus de temps, ce qui peut donner l'impression que le site est généralement lent. Java et Python doivent tous deux démarrer leur machine virtuelle/interprète, et je m'attends donc à ce que Go soit un ordre de grandeur plus rapide dans ce domaine.

Il y a un autre problème : maintenant que Python2.7 est disponible, Go est la seule option qui soit monofilaire (ironiquement, étant donné que Go est conçu comme un langage moderne multi-processus). Ainsi, bien que les requêtes Go devraient être traitées plus rapidement, une instance ne peut traiter les requêtes que de manière sérielle. Je serais très surpris que cette limitation dure longtemps, cependant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X