假定循环内用时较多,fun1比fun2快多少

简介: 假定循环内用时较多,fun1比fun2快多少

运行环境:WinXP VS2005(VC8)

#include <iostream>
using namespace std ;
#include <time.h>
#define WAN (10000)
const int iNum = WAN*300;
void fun1(int* p)
{
    for( int i = 0 ; i < iNum ; i++ )
    {
        p[i] = i;
    }
}
void fun2(int* p)
{
    for( int i = 0 ; i < iNum ; i+= 4  )
    {
        p[i] = i;
        p[i+1] = i+1;
        p[i+2] = i+2;
        p[i+3] = i+3 ;
    }
}
void Test()
{
    int * p = new int[iNum];
    long x1 = clock();
    fun1(p);
    long x2 = clock();
    fun2(p);
    long x3 = clock();
    cout << (x2-x1) << "豪秒 " << (x3-x2) << "豪秒" << endl;
    delete [] p ;
}
void main()
{
   Test();
   Test();
   Test();
   Test();
   Test();
}

循环次数(iNum )由3亿改到300万次,fun1快约16毫秒。约快50%

47豪秒 31豪秒

47豪秒 31豪秒

47豪秒 31豪秒

47豪秒 31豪秒

47豪秒 31豪秒

把fun1,fun2的用时改多些

#include <iostream>
using namespace std ;
#include <time.h>
#include <math.h>
#define WAN (10000)
const int iNum = WAN*300;
#define NN(n) (pow((float)n,100))
void fun1(int* p)
{
    for( int i = 0 ; i < iNum ; i++ )
    {
        p[i] = NN(i);
    }
}
void fun2(int* p)
{
    for( int i = 0 ; i < iNum ; i+= 4  )
    {
        p[i] = NN(i);
        p[i+1] = NN(i+1);
        p[i+2] = NN(i+2);
        p[i+3] = NN(i+3) ;
    }
}
void Test()
{
    int * p = new int[iNum];
    long x1 = clock();
    fun1(p);
    long x2 = clock();
    fun2(p);
    long x3 = clock();
    cout << (x2-x1) << "豪秒 " << (x3-x2) << "豪秒" << endl;
    delete [] p ;
}
void main()
{
   Test();
   Test();
   Test();
   Test();
   Test();
}

11781豪秒 12203豪秒

11922豪秒 11921豪秒

12219豪秒 11688豪秒

11625豪秒 11641豪秒

11703豪秒 11734豪秒

结论:用时基本相同


相关文章
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
1055 7
性能工具之emqtt-bench BenchMark 测试示例
|
缓存 UED 网络架构
网站404该怎么解决
网站404错误通常表示用户尝试访问的网页不存在或无法找到
1744 0
|
存储 Java Shell
【Java项目】拉取公司GitLab项目的教程
【Java项目】拉取公司GitLab项目的教程
650 0
|
iOS开发 MacOS Python
Mac:安装Python3并配置环境变量(本地多个Python版本选择配置)
Mac:安装Python3并配置环境变量(本地多个Python版本选择配置)
16614 0
Mac:安装Python3并配置环境变量(本地多个Python版本选择配置)
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
为了实现对一楼和二楼不同的疏散时间,复制之前的按钮,创造两个新按钮分别对一楼和二楼进行控制。在MyFloor1中,选择colOut,按照Ctrl键移动,复制一个colOut1出来。好像服务的延迟时间太长了,可以调小一点,设置为uniform(0.5, 1.0)为了区分一楼和二楼,在Main中调整MyFloor2的高度为40。把等待时间设置长一点,设置为uniform(1.5, 2.0)为了控制人们的逃生目的地,我们先拖拽一个集合出来。在Main中,把MyFloor2拖拽出来。
949 0
【仿真建模】第三课:AnyLogic入门基础课程 - 多层建筑行人疏散仿真讲解
|
Python
Python Flask 简明教程(7)--路由使用方法详解
本文目录 1. 概述 2. 简单路由 3. 处理HTTP方法 4. 绑定多个URL 5. URL参数 6. 动态URL 7. 小结
456 0
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。