Wanneer ik onderstaand stukje code uitvoer op een bestand van plusminus 31 MB
krijg ik volgende timings:
Na wat profiling blijkt dat dit stukje code 99% van de tijd bezig is met de 'readInput'-functie.
In deze functie wordt 50-50 van de tijd 'verspeeld' met de raw_input() en de int()-conversie
Zijn er andere, en betere manieren om input te lezen en/of de input naar een integer te converteren?
En dit met de standaard python libs.
Le code:
PS: Python 2.5.2
krijg ik volgende timings:
time cat input.txt | python tweakers.py 11962 real 0m13.152s user 0m10.582s sys 0m2.508s
Na wat profiling blijkt dat dit stukje code 99% van de tijd bezig is met de 'readInput'-functie.
In deze functie wordt 50-50 van de tijd 'verspeeld' met de raw_input() en de int()-conversie
Zijn er andere, en betere manieren om input te lezen en/of de input naar een integer te converteren?
En dit met de standaard python libs.
Le code:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| import string lst = [] n = 0 div = 0 def readInput(): global lst,n,div strTmp = string.split(raw_input(),' ') n = int(strTmp[0]) # number of lines in file - param 1 from first line div = int(strTmp[1]) # read dividor - param 2 from first line lst = [0] * n # initiase array (fixed size) for i in range(n): lst[i] = int(raw_input()) # convert input to integer return def calc(): global lst,n,div output_number = 0 for i in range(n): if (lst[i] % div == 0): output_number += 1 print output_number return if __name__ == '__main__': readInput() calc() pass |
PS: Python 2.5.2