计算程序运行时间的方法 & 程序运行时限小研究

我的电脑 1s 内最多运行 4*10^8 级别数据,此时运行时间约为 920 ms。(电脑性能不太好)

但是一件玄幻的事情是,CCF 的机子似乎能跑到 10^9。

在 2021 CSP-J 的 T1 分糖果中,有学长写了 O(n) 的复杂度(n<=10^9),还是 A 了。

并且,时间只有 400 ms...

尽管如此,还是尽量将复杂度控制在 10^8(因为还有常数干扰)。

Tips

一、 计算程序运行时间的代码:

//这里放其他头文件
#include<ctime>
using namespace std;
clock_t start,stop; 
int main(){
    //这里放输入。不用文件读写时,输入时间会被计算
    start=clock();
    
    //这里放程序主体
    
    stop=clock();
    printf("\n\n%llf",(double)(stop-start)/CLOCKS_PER_SEC); 
       //记得强制类型转化
    return 0;
}

二、各时间复杂度适用的最大数据范围

 三、算法复杂度直观对比


原载于洛谷,发布于 2022.10.25.

### 设置MATLAB程序在指定时间后自动结束 为了使MATLAB程序能够在特定时间之后自动终止,可以在脚本中加入计时逻辑。具体方法是在代码开始处记录当前时间,并定期检查已过去的时间是否超过了预设的最大允许运行时间。如果超出了规定时间,则调用`error()`或`return`提前退出。 下面是一个简单的例子来展示这一过程: ```matlab % 设定最大允许运行时间为60秒 (可以根据需求调整) maxRunTimeInSeconds = 60; startTime = tic(); % 记录起始时刻 while true elapsed_time = toc(startTime); % 获取已经过去的秒数 if elapsed_time &gt;= maxRunTimeInSeconds disp(&#39;达到最大运行时限&#39;); break; % 或者使用 error() 抛出异常立即停止 end % 这里放置实际要执行的任务... end ``` 另一种更为优雅的方式是利用MATLAB内置的定时器对象(`timer`)来进行更加精确地控制[^1]。这种方式不需要频繁地查询系统时间,而是让MATLAB内部机制负责触发回调函数,在适当时候中断主流程。 #### 使用Timer对象实现定时关闭 ```matlab function autoStopMatlab() t = timer(&#39;ExecutionMode&#39;, &#39;singleShot&#39;,... &#39;StartDelay&#39;, 60,... % 延迟多少秒后触发 &#39;TimerFcn&#39;, @stopCallback); start(t); try runYourMainCodeHere(); catch ME fprintf(&#39;发生错误:%s\n&#39;,ME.message); finally stop(t); delete(t); % 清理资源 end function stopCallback(~,~) warning off MATLAB:cancelInterrupt; keyboard; % 此行为调试目的可选保留 throw(MException(&#39;AutoTerminate:Timeout&#39;,&#39;达到了预定的最长运行时间&#39;)); end end ``` 上述代码定义了一个名为 `autoStopMatlab` 的函数,它会在启动后的第60秒尝试强制终止正在执行的操作。需要注意的是,这种方法依赖于MATLAB能够正常响应中断请求;某些情况下可能无法及时打断长时间计算密集型任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值