2017-09-01 1 views
0

J'ai une fonction qui effectue plusieurs appels à une API REST. L'appel initial est fait, je reçois quelques valeurs pour faire le prochain appel et analyser le JSON dans les objets personnalisés. Une fois que j'ai fini, j'appelle la fonction à nouveau avec une nouvelle URL. Je fais un total de 8 appels et au total cela prend environ 10-14 secondes. J'utilise Alamofire pour le réseautage et SwiftyJSON pour analyser. J'ai mis dans un tas de contrôles d'intervalle de temps dans la fonction pour voir ce qui prenait le plus de temps. Une fois les données JSON récupérées, l'exécution de la logique et de l'analyse prend au total environ 300 ms, mais le temps nécessaire à la demande d'Alamofire pour récupérer le JSON est de 1,3 à 1,5 seconde. J'ai couru une tonne de tests et le meilleur que j'ai pu obtenir était de 700ms pour un appel mais la plupart ont duré plus d'une seconde. Quand je les lance dans Postman (un total de 8 avec un retard de 300ms) il faut 300ms à 700ms chacun. Environ deux fois plus vite. Cela semble-t-il correct ou devrais-je voir les demandes prendre autant de temps que je le fais dans Postman? En utilisant le même ordinateur et en exécutant l'application sur un simulateur et mon téléphone avec les mêmes résultats. Voici mon code dépouillé:Les requêtes Alamofire sont-elles lentes?

func parse() { 
    Alamofire.request(jsonURL).responseJSON { response in 
     switch response.result { 
     case .success(let value): 
      let json = JSON(value) 
      //Check for 200 code 
      if json["meta"]["code"].intValue == 200 { 
       // doing lot of stuff 
       } 
     case .failure(let error): 
      print(error) 
      print("json failed") 

     } 
    } 
} 

Répondre

0

Essayer de déterminer si la réponse revient avec 200 ok est généralement lente d'Alamofire. Vous pouvez éviter le 200 et ajouter un traitement d'erreur qui est exécuté s'il y a un problème. Ce serait beaucoup plus rapide. Si vous avez des questions, veuillez commenter ci-dessous.

Merci,

Arnav Kaushik

+0

Merci pour la réponse. J'ai enlevé cette vérification et il ne semble pas avoir eu trop d'effet quand je compare le temps au facteur. Je vais le garder dehors au cas où. – HH887

+0

Pouvez-vous poster vos résultats de journaux et de facteurs s'il vous plaît. Aussi, pouvez-vous me montrer votre code. S'il n'y a pas trop d'effet, vous pouvez conserver le code. –