Perl 一种估算程序运行时间的算法
我需要找到在不同输入上执行程序的总时间。程序读取一些数据并将其写入另一个文件。数据值的值和数据的大小每次都不同 我想知道对于所有大小的数据,通常需要多长时间 查找该值的算法是否基于单个执行程序的总计时 例如,如果我知道Perl 一种估算程序运行时间的算法,perl,algorithm,process,Perl,Algorithm,Process,我需要找到在不同输入上执行程序的总时间。程序读取一些数据并将其写入另一个文件。数据值的值和数据的大小每次都不同 我想知道对于所有大小的数据,通常需要多长时间 查找该值的算法是否基于单个执行程序的总计时 例如,如果我知道 for single execution a.program - execution time 1.2sec - its create file 100 kb file 我能找出在不同数据大小上执行n次需要多长时间吗?我不太理解你的问题,但我相信
for single execution
a.program - execution time 1.2sec
- its create file 100 kb file
我能找出在不同数据大小上执行n次需要多长时间吗?我不太理解你的问题,但我相信你要问的是如何在运行程序之前计算出程序的执行时间 这是与环境有关的。停滞不前的问题是难以解决的 如果我误解了你的问题,我道歉
编辑:为了回应您的澄清,对于较大的输入,运行时没有通用的算法;对于较小的输入,运行时没有通用的算法。这是一件非常棘手的事情。你可以使用一些启发法。例如,您可以根据不同“大小”(例如,10、100、1000、10000)的输入计算运行时,并尝试将曲线拟合到函数“大小”->运行时。我不太理解您的问题,但我相信您要问的是如何在运行程序之前计算出程序的执行时间 这是与环境有关的。停滞不前的问题是难以解决的 如果我误解了你的问题,我道歉
编辑:为了回应您的澄清,对于较大的输入,运行时没有通用的算法;对于较小的输入,运行时没有通用的算法。这是一件非常棘手的事情。你可以使用一些启发法。例如,您可以根据不同“大小”(例如,10、100、1000、10000)的输入计算运行时,并尝试将曲线拟合到函数“大小”->运行时。1,停止问题是难以解决的,即即使您有数据和程序,也无法告诉(!在一般情况下!)运行它需要多长时间。 2、暂停问题中的“程序”是指完整状态,例如,您的程序+它处理的数据
所以它是两倍难处理的:)1,停止问题是很难处理的,也就是说,即使您有数据和程序,也无法告诉(!在一般情况下!)运行它需要多长时间。 2、暂停问题中的“程序”是指完整状态,例如,您的程序+它处理的数据
因此,这是两个棘手的问题:)这方面没有完美的算法,而且变化很大——第一次运行可能非常慢,但第二次运行会快得多,因为磁盘中的数据缓存在内存中
您可以使用各种输入来衡量您的程序,并尝试建立一个输入大小/复杂性与执行时间的比较模型,然后使用该模型的结果来估计执行时间。这方面没有完美的算法,而且变化很大-第一次运行可能非常缓慢,但第二次运行会快得多,因为来自磁盘的数据缓存在内存中
您可以使用各种输入来衡量您的程序,并尝试建立一个输入大小/复杂性与执行时间的比较模型,然后使用该模型的结果来估计执行时间。如果我理解正确,您希望了解一个进程执行所需的时间 如果是这种情况,则使用模块
使用此功能,您可以在不同的位置进行计时,并判断程序不同部分的计时。如果我理解正确,您希望了解一个进程执行所需的时间 如果是这种情况,则使用模块
使用此选项,您可以在不同的位置进行计时,并判断程序不同部分的计时。从问题中,我不确定您是否试图在运行此程序之前计算执行时间,或记录脚本运行所需的时间。如果你试图预先计算,我同意其他的答案说这是不可能的
如果要记录执行时间,只需向程序中添加2个全局日期变量,在执行开始时立即将当前日期和时间存储在一个变量中,然后在终止时将时间存储在第二个变量中。使用日期差函数可以为您提供经过的秒数(或所需的时间单位)。从问题中,我不确定您是否试图在运行此程序之前计算执行时间,或记录脚本运行所需的时间。如果你试图预先计算,我同意其他的答案说这是不可能的
如果要记录执行时间,只需向程序中添加2个全局日期变量,在执行开始时立即将当前日期和时间存储在一个变量中,然后在终止时将时间存储在第二个变量中。使用日期差函数可以给你所经过的秒数(或你想要的时间单位)。很难确定,但我认为这不是停车问题的一个版本。(或者,至少可以将其简化,使其不受影响) 我想,你只是想估算一下一系列的读写操作需要多长时间……但是读写量是不同的 最简单的方法是进行一些经验测量(越多越好),并使用这些测量来估计未来运行所需的时间。如果您发现读取10 MB数据需要10秒,那么您可以估计100 MB可能需要大约100秒。(当然,这是假设您正在研究一个O(n)算法……如果不是,您必须进行相应的调整。) 当然,这很容易出错,因为系统上发生了其他任何事情……但是,根据您的需要,它可能会给您提供足够好的估计 当然,如果你能upda