先说结论,会,并且运行时间是一般赋值语句的200倍左右,这个知乎回答是我昨天写的,内容是相同的。
首先既然是探讨输出是否影响程序运行时间,那肯定就要控制是否输出作为唯一变化的参量,并获取在不同规模下的数据量的影响。
以python为例,代码如下:
import datetime
import numpy as np
fn = open('/exports/hhr346/run.txt', 'w')
for time in np.arange(1, 50):
start = datetime.datetime.now()
start_second = start.second
start_microsecond = start.microsecond
for a in range(1000*time):
a += 1
#print('a is ', a)
end = datetime.datetime.now()
end_second = end.second
end_microsecond = end.microsecond
delta = (end_second - start_second)*1000000 + (end_microsecond - start_microsecond)
fn.write('{}'.format(delta))
fn.write('\n')
输出a的部分为控制是否输出的语句,前后的不同仅为是否注释
导出写入的文本文件来画图
从结果上可以看到,二者都大致是线性关系,不同的是选择输出时,结果的随机性更大,但是线性关系是显著的;选择print时,单次循环的时间增量在同等条件下是不print的200倍,所以print对于运行时间的影响还是相当大的。
后续可以去探究打印字符的多少对运行时间的影响程度,多打印字符是否时间就会更多?不同语言是否影响不同?
实际上这部分探究只能算是一种粗略的探究,程序还存在一些问题,因为获取的是微秒和秒,所以运行时不要跨分钟,否则就会出现离谱的负数;还有就是使用的datetime
返回的时间实际上和系统的性能和延迟有关,所以实际上精度并不太高,并且有些时候也可以观察到输出并不是线性增长的。
并且在验证的过程应用了获取时间和写入文件这样“多余”的操作(还有导入模块影响的时间),必然会对总体运行时间造成影响,所以也许更好的方法是一个个用 time
命令来获取每次运行的时间?(bushi
感觉这个问题还是很有趣的,就在博客园里也记录一下。
标签:语句,end,Python,datetime,start,second,microsecond,print From: https://www.cnblogs.com/hhr346/p/16976166.html