zoukankan      html  css  js  c++  java
  • 如何优雅地防止MLE(for linux)

    赛前最后一天模拟赛又有小伙伴MLE了……这里就讲一下如何较为精确地获取程序运行时间和空间。

    资源统计当然是操作系统统计的最精确。所以可以这样写(noilinux实测通过,windows下应该不行):

    注意:程序所占空间为当下运行最大所占的空间。这样统计包括动态空间,但不代表可能的最大所占空间。申请的数组如果没有用完也不会统计进去。(这也是大部分OJ没有用很多动态内存,而各个测试点所占内存仍有较大差距的原因。)所以你需要极限数据来帮你。当然,还是手算的上限最靠谱

    #include <cstdio>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/wait.h>
    #include <sys/resource.h>
    int main() {
        pid_t Pid;
        Pid = fork();
        if (Pid == -1) { 
            printf("Fork error.
    "); //错误信息。没有遇到过,应该省去问题不大。
            return 0;
        }
        if (Pid == 0) {
            system("./a.out < in > out");//这里放你想执行的命令。
            return 0;
        }
        int State = 0;
        rusage RUse;
        pid_t PID = wait4(-1, &State, __WALL, &RUse);
        printf("Time = %d ms, Memory = %d kb
    ", RUse.ru_utime.tv_sec * 1000 + RUse.ru_utime.tv_usec / 1000, RUse.ru_maxrss);
        //这样就得到了时间(ms)和空间(kb)
        return 0;
    }
    
  • 相关阅读:
    数据不平衡
    2D到3D 外参矩阵估计
    ppt 绘图转成 Latex 常用的 eps 格式
    3D 旋转中 旋转矩阵 欧拉角 四元数的相互转换
    opencv使用 --- fastGlobalSmootherFilter
    Pytorch
    MTCNN 复现
    3DFace基础---光照估计
    Pytorch --- cuda 相关
    Pytorch---多维数组运算过程的索引处理
  • 原文地址:https://www.cnblogs.com/chy-2003/p/11862521.html
Copyright © 2011-2022 走看看