Bonjour, c'est une liaison de mana. Il ne fait aucun doute que c'est une grammaire polyvalente, lisible et merveilleuse parmi les notations des langages de programmation avec de nombreuses inclusions en Python (c'est une opinion individuelle et peut être très préjugée), mais en programmation compétitive c'est souvent: Vous pouvez voir la notation de.
l = list(map(int, input().split()))
C'est l'ennemi de la notation d'inclusion, map
(préjugé (omis). J'ai comparé la vitesse car la carte que je dois mordre à chaque fois est quoi!".
Utilisez Ubuntu depuis wsl1.
$ uname -a
Linux LAPTOP-H6KC5C7N 4.4.0-18362-Microsoft #1049-Microsoft Thu Aug 14 12:01:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux
$ py --version
Python 3.8.0
1
10000 Préparez un fichier texte avec des valeurs entières non négatives en lignes et 5 colonnes. Écrivez 10000 au début pour faire le nombre de colonnes dans le fichier.
Utilisez time () dans le module de temps «2» pour enregistrer l'heure de début.
Stockez les données dans une notation d'inclusion ou une carte pour chaque ligne «3».
Après avoir répété «4» data.append, obtenez l'heure avec time (), obtenez la différence par rapport à la valeur de «2» et affichez-la comme heure d'exécution.
5
Essayez environ 5 fois et comparez leurs moyennes.
Utilisez le script suivant.
Notation d'inclusion
import time
start = time.time()
n = int(input())
data = []
for _ in range(n):
data.append([int(e) for e in input().split(" ")])
process_time = time.time() - start
print(process_time)
map
import time
start = time.time()
n = int(input())
data = []
for _ in range(n):
data.append(list(map(int, input().split())))
process_time = time.time() - start
print(process_time)
Essayez de l'exécuter environ cinq fois et pensez à la moyenne. La première est la notation d'inclusion. Eh bien, c'est juste.
Notation d'inclusion
$ for((i=0;i<5;i++)); do cat InputText.txt | py time_comp.py; done
0.0833895206451416
0.07289266586303711
0.08693099021911621
0.12533855438232422
0.09039974212646484
S'agit-il d'environ 0,09541 en moyenne? Vient ensuite la carte.
map
$ for((i=0;i<5;i++)); do cat InputText.txt | py time_map.py; done
0.0980367660522461
0.08674144744873047
0.11994338035583496
0.08462047576904297
0.08770060539245605
Cela équivaut également à 0,09541 en moyenne. (Non, il n'y a pas de différence significative ... je pensais écrire un article car la notation d'inclusion est lente!)
Je l'ai fait avec Razpai 4.
$ uname -a
Linux asana 5.4.51-v8+ #1333 SMP PREEMPT Mon Aug 10 16:58:35 BST 2020 aarch64GNU/Linux
$ py --version
Python 3.7.3
$ for((i=0;i<5;i++)); do cat InputText.txt | py time_comp.py; done
0.12080025672912598
0.10874629020690918
0.1127462387084961
0.1103978157043457
0.15588116645812988
$ for((i=0;i<5;i++)); do cat InputText.txt | py time_map.py; done
0.11949372291564941
0.11281895637512207
0.11392450332641602
0.2708289623260498
0.276080846786499
Si vous calculez la moyenne, la notation d'inclusion est d'environ 0,1217 et la carte est d'environ 0,1786. La notation inclusive est devenue dominante ici.
Je l'ai fait sous Windows.
> cmd /c ver
Microsoft Windows [Version 10.0.18363.1110]
> py --version
Python 3.8.2
> for($i = 0;$i -le 5; $i++){cat .\InputText.txt | py .\time_comp.py}
1.0488629341125488
0.7845804691314697
1.163966178894043
0.7295846939086914
0.7399096488952637
0.8466687202453613
> for($i = 0;$i -le 5; $i++){cat .\InputText.txt | py .\time_map.py}
0.5758388042449951
0.5823671817779541
0.6683478355407715
0.6919825077056885
0.6597652435302734
0.6140100955963135
~~ Windows Oops ~~ Il y avait une nette différence significative, mais il semble qu'il y ait pas mal de différences selon le système d'exploitation.
En conclusion, «Il est facile d'être influencé par l'environnement et la situation, et je ne peux pas dire ce qui est le mieux. C'est comme ça? Je pensais que cette carte était utilisée plus souvent parce qu'elle était évidemment plus rapide, mais cela ne semble pas être le cas. Ou y aura-t-il une différence dans d'autres architectures et systèmes d'exploitation ... Cela changera-t-il si l'entrée est définie sur sys.stdin, la restauration en attente peut-elle être lente en premier lieu et la différence peut être masquée, quelle est l'efficacité de la mémoire, etc. Il semble y avoir des éléments de vérification, mais je voudrais terminer ici. Merci d'avoir lu jusqu'ici. Quelle fête êtes-vous?
Recommended Posts