ACM模板——测试时间复杂度

简介: ACM模板——测试时间复杂度

案例

#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
set<int> st;
void init()
{
    st.clear();
    for(int i=0;i<1000000;i++)
    {
        st.insert(i+1);
    }
}
void foo()
{
    long i;
    for (i=0;i<1000000000;i++)
    {
        long a= 0;
        a = a+1;
    }
}
void foo_set_count()
{
    for(int i=0;i<1000000;i++)
    {
        st.count(i+1);
    }
}
void test()
{
    double dur;
    clock_t start,end;
    start = clock();
    // do something...
//    foo();
    foo_set_count();
    end = clock();
    dur = double(end - start);
    printf("Use Time: %f\n",(dur/CLOCKS_PER_SEC));
}
int main()
{
    init();
    test();
    return 0;
}

结果

image.png    


解析


clock() 函数返回从 “开启这个程序进程” 到 “程序中调用 clock() 函数” 时之间的 CPU 时钟计时单元(clock tick)数,在MSDN 中称之为挂钟时间(wal-clock)常量 CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元。并且用 clock_t 方法来做时间差的优点:支持 Linux + Windows 系统。


需要测试哪个方法就把该方法放到时间差变量的中间位置,千万不要把之前的预备工作也放入在内,以免结果有误差。而且最好不要单个测试,最好弄个 for 循环来多跑 N 次(最后的结果除以 N),以免出现偶然性。


一般情况,1s 可以跑 10^8 次数量级单位,OJ 评测比本机应该要更快个(1~10)倍之间不等。

执行一次 st.count() 方法:0.669 * 10^8 / 10^6 == 66.9 数量级单位。log(2,10^6) (下2,上10^6) ==19.93。又因为 OJ 与本机之间有几倍的误差,所以可以看为这个结果是有效的。所以 set.count() 属于 O(logn) 级别。


目录
相关文章
|
1月前
|
测试技术 持续交付 人机交互
软件测试计划说明书模板
软件测试计划说明书模板
157 0
|
JSON 小程序 Java
微信公众平台测试号——模板消息发送Demo
微信公众平台测试号——模板消息发送Demo
767 0
|
9月前
|
测试技术 UED
如何实施测试用例评审维护与更新?附模板
如何实施测试用例评审维护与更新?附模板
103 0
|
9月前
|
测试技术
软件测试用例评审标准规范是什么?附模板
软件测试用例评审标准规范是什么?附模板
312 1
|
9月前
|
JavaScript
html使用vue模板、html引入vue.js-测试demo
html使用vue模板、html引入vue.js-测试demo
|
10月前
QT+OpenGL模板测试和混合
当片段着色器处理完一个片段之后,模板测试会开始执行。和深度测试一样,它可能会丢弃片段,接下来被保留的片段会进入深度测试。
63 0
|
存储 数据采集 监控
性能测试报告模板
本文档为某某某项目性能测试报告,主要内容包括概述、测试环境、测试方法、测试工具等。主要的读者有性能测试脚本开发人员、性能测试执行人员、性能评估人员、开发人员、项目经理、用户代表等。
3157 0
性能测试报告模板
|
11月前
|
测试技术
TDD单元测试类方法模板
TDD单元测试类方法模板
|
CDN
Vue3.js快速开发CDN引入测试模板
Vue3.js快速开发CDN引入测试模板
385 0
|
测试技术 Python
python接口自动化(五)--接口测试用例和接口测试报告模板(详解)
当今社会在测试领域,接口测试已经越来越多的被提及,被重视,而且现在好多招聘信息要对接口测试提出要求。区别于传统意义上的系统级别测试,很多测试人员在接触到接口测试的时候,也许对测试执行还可以比较顺利的上手,但一 提到相关的文档,比如测试用例和报告,就有些不知所措了。这类问题在我加入的几个测试的群里,经常看到一些人在不断提问。   今天就用这篇文章来说说接口测试用例和报告。
376 2
python接口自动化(五)--接口测试用例和接口测试报告模板(详解)