1 votes

mesurer la vitesse de téléchargement ruby

Je mets en cache le résultat de la requête dans un fichier côté serveur. Lorsqu'une nouvelle requête est soumise, le webservice vérifie si la réponse se trouve dans l'un des fichiers mis en cache. Si c'est le cas, il envoie le fichier. Sinon, il génère le résultat et l'envoie au client. Maintenant, lorsqu'il envoie le fichier mis en cache, le téléchargement est beaucoup plus rapide (par rapport à la génération du résultat et à son envoi sous forme de chaîne de caractères). Par temps de téléchargement, j'entends (le temps total d'attente de la réponse par l'utilisateur) - (le temps de traitement sur le serveur).

Avez-vous une idée de la raison ? Ou une suggestion sur la façon dont je peux la découvrir ?

le webservice est écrit en ruby et le client est en javascript.

2voto

tadman Points 103

L'envoi d'un fichier est géré par le système d'exploitation. Il se contente d'insérer le contenu dans la prise et ne demande aucune intervention de la part de votre application. C'est littéralement un jeu d'enfant.

L'envoi d'un flux de données à partir du serveur de base de données est beaucoup plus compliqué. La requête doit être composée, codée, envoyée sur le socket, interprétée par le serveur, exécutée, et le résultat doit être recodé et renvoyé sur le fil. Peut-être déduisez-vous ce temps de votre calcul, mais ce n'est pas clair.

Ensuite, une fois que le client a reçu le résultat, il doit le lire sur la socket, le convertir en objets Ruby, éventuellement en modèles qui entraînent encore plus de surcharge, et remettre cet objet résultat à la méthode qui l'a demandé. Si vous le re-sérialisez ensuite en un résultat, il doit passer par le processus de copie de ces données une seconde fois dans le flux de sortie.

En résumé, il s'agit de lire un fichier préexistant : Zéro lecture, zéro copie.

Lecture de la base de données : Une lecture, deux copies.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X