Je n'avais pas le nombre de collaborations pouvant être liées à l'utilisateur avec l'API Qiita, alors j'ai créé Utility by me-même et j'ai essayé d'implémenter la sortie de classement. est.
Étant donné que le résultat de l'acquisition est renvoyé dans le dictionnaire du nom d'utilisateur et du nombre de collaborations, et que le nombre de collaborations est également traité comme un caractère, la fonction intégrée triée ne fonctionne pas comme prévu.
sort.py
import GetQiitaContribution
d = GetQiitaContribution.getContributionByFile("account.txt")
for v in sorted(d.values()):
print (v)
python3 ./sort.py
0
142
23
235
309
4
42
J'étudie Python ici, alors j'ai essayé différentes choses.
En tant que valeur du dictionnaire, je l'ai modifié pour que le nombre de contributions soit stocké sous forme de valeur numérique, et j'ai essayé d'effectuer le tri comme prévu.
python
# dict[username] = getContributionByName(username)
dict[username] = int(getContributionByName(username))
time python3 ./sort.py
0
4
23
42
142
235
309
real 0m4.177s
user 0m0.101s
sys 0m0.026s
real 0m3.636s
user 0m0.111s
sys 0m0.028s
real 0m3.377s
user 0m0.108s
sys 0m0.029s
Ici, j'ai comparé la version de stockage de chaînes d'origine avec le temps qu'il faut pour s'exécuter.
time python3 ./sort.py
0
142
23
235
309
4
42
real 0m4.298s
user 0m0.115s
sys 0m0.045s
real 0m3.535s
user 0m0.100s
sys 0m0.025s
real 0m3.606s
user 0m0.100s
sys 0m0.025s
Je me demandais quelle serait la différence de vitesse entre le tri des caractères et le tri numérique, mais ce n'était pas une comparaison de vitesse qui coupait uniquement le tri (je ne peux rien dire car ce n'est pas profilé, mais ça prend du traitement La plupart du temps semble être consacré au grattage effectué par l'utilitaire), et la quantité de données triées n'est pas un volume important, ce n'est donc pas utile.
J'ai donc décidé de faire une comparaison à grande échelle. J'ai fait une liste de nombres et une liste de chaînes de 1 à 1048576 (nombre maximum de lignes dans Excel pour Mac) et j'ai essayé de trier chacune.
Valeur numérique
real 0m12.400s
user 0m9.455s
sys 0m2.412s
real 0m12.522s
user 0m9.444s
sys 0m2.493s
real 0m12.500s
user 0m9.718s
sys 0m2.288s
Chaîne
real 0m14.583s
user 0m9.772s
sys 0m3.828s
real 0m12.000s
user 0m9.259s
sys 0m2.200s
real 0m12.183s
user 0m9.430s
sys 0m2.249s
Apparemment, lorsque le nombre d'éléments est d'environ 1 million, il n'y a pas beaucoup de différence dans la vitesse de tri des nombres et des chaînes.
Il semble que la vitesse ne soit pas de l'ordre de 7 chiffres, qu'il s'agisse d'une chaîne de caractères ou d'une valeur numérique. LL s'est généralisé et se démarque beaucoup, mais je suis un peu surpris de devenir programmeur de rotor, que ce soit l'évolution du matériel ou l'évolution de LL, mais j'aimerais terminer cet article en vrac ici.
Merci à ceux qui ont lu jusqu'ici.
Recommended Posts