我正在制作一个程序,输入就像:
1 5 3 2 4
1 4 5 3 2
我的程序拆分输入并将其存储在两个列表中:
first=input().split()
second=input().split()
但重要的是需要很长时间。这是cProfile的输出,输入与我之前提到的相同。
> 30 function calls in 8.604 seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 8.604 8.604 KSPnomore.py:1(<module>)
4 0.000 0.000 0.000 0.000 cp1252.py:18(encode)
3 0.000 0.000 0.000 0.000 cp437.py:22(decode)
3 0.000 0.000 0.000 0.000 {built-in method charmap_decode}
4 0.000 0.000 0.000 0.000 {built-in method charmap_encode}
1 0.000 0.000 8.604 8.604 {built-in method exec}
3 8.604 2.868 8.604 2.868 {built-in method input}
2 0.000 0.000 0.000 0.000 {built-in method print}
3 0.000 0.000 0.000 0.000 {method 'append' of 'list' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
3 0.000 0.000 0.000 0.000 {method 'pop' of 'list' objects}
2 0.000 0.000 0.000 0.000 {method 'split' of 'str' objects}
有人可以帮我改进输入吗?
答案 0 :(得分:2)
您将大部分时间花在输入功能上:
ncalls tottime percall cumtime percall filename:lineno(function)
3 8.604 2.868 8.604 2.868 {built-in method input}
正如评论所示,这会计算您输入数字的时间。
我用这个程序测试了它:
foo = input("42")
在按下回车键之前等待~10秒得到这个结果:
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 11.202 11.202 so_inputtime.py:1(<module>)
1 0.000 0.000 11.202 11.202 {built-in method exec}
1 11.202 11.202 11.202 11.202 {built-in method input}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
这里输入函数消耗约10秒的运行时间。
要获得更逼真的程序配置文件,可以使用字符串替换输入以进行性能分析。
# for profiling
first = "1 5 3 2 4".split()
second = "1 4 5 3 2".split()
# for productive use
# first = input().split()
# second = input().split()