fun2比fun1稍快点

运行环境:WinXP VS2005(VC8)

核心代码:

#include <iostream>

using namespace std ;

#include <time.h>



#define WAN (10000)

const int iNum = WAN*WAN*3;

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[3+3] = i+3 ;

    }

}



测试程序一:

void main()

{

    int * p = new int[iNum];

    int x1 = time(NULL);

    fun1(p);

    int x2 = time(NULL);

    fun2(p);

    int x3 = time(NULL);

    cout << (long)(x2-x1) << "秒 " << (long)(x3-x2) << "秒";

    delete [] p ;

}

五次的运行结果:

4,3

5,2

4,3

5,2

4,3



测试程序二fun2在前,fun1在后:

void main()

{

    int * p = new int[iNum];

    int x1 = time(NULL);

    fun2(p);

    int x2 = time(NULL);

    fun1(p);

    int x3 = time(NULL);

    cout << (long)(x2-x1) << "秒 " << (long)(x3-x2) << "秒";

    delete [] p ;

}

五次的运行结果:

3,4

3,5

3,4

2,5

3,4

总结3亿次循环,可以节约1秒左右。

p[3+3] = i+3 ; 弄错了,改正。 时间精确到毫秒。

#include <iostream>
using namespace std ;
#include <time.h>

#define WAN (10000)
const int iNum = WAN*WAN*3;
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();
}

结果为:

4734豪秒 3547豪秒
5078豪秒 3047豪秒
4453豪秒 3047豪秒
4468豪秒 2954豪秒
4531豪秒 3063豪秒

换一下Test中fun1,fun2的位置:

void Test()

{

    int * p = new int[iNum];

    long x1 = clock();

    fun2(p);

    long x2 = clock();

    fun1(p);

    long x3 = clock();

    cout << (x2-x1) << "豪秒 " << (x3-x2) << "豪秒" << endl;

    delete [] p ;

}

结果为:

3016豪秒 4313豪秒
2938豪秒 4344豪秒
2953豪秒 4515豪秒
2875豪秒 4343豪秒
2875豪秒 4329豪秒

结论:也是快1.5秒。

fun2比fun1稍快点的更多相关文章

  1. 一步步学习javascript基础篇(8):细说事件

    终于学到事件了,不知道为何听到“事件”就有一种莫名的兴奋.可能是之前的那些知识点过于枯燥无味吧,说起事件感觉顿时高大上了.今天我们就来好好分析下这个高大上的东西. 可以说,如果没有事件我们的页面就只能 ...

  2. Python学习Day2笔记(字符编码和函数)

    1.字符编码 #ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位#中文编码为GBK 操作系统编码也为GBK#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一 ...

  3. C++基础知识面试精选100题系列(11-20题)[C++ basics]

    [原文链接] http://www.cnblogs.com/hellogiser/p/100-interview-questions-of-cplusplus-basics-11-20.html [题 ...

  4. 浅谈spring 声明式事物

    此处主要讲讲事物的属性. 事物属性包含了五个方面: 1.传播行为 2.隔离规则 3.回滚规则 4.事物超时 5.是否只读 一.传播行为 事务的第一个方面是传播行为(propagation behavi ...

  5. jQuery中多个元素的Hover事件

    1.需求简介 jQuery的hover事件只是针对单个HTML元素,例如: $('#login').hover(fun2, fun2); 当鼠标进入#login元素时调用fun1函数,离开时则调用fu ...

  6. linux下实现在程序运行时的函数替换(热补丁)

    声明:以下的代码成果,是参考了网上的injso技术,在本文的最后会给出地址,同时非常感谢injso技术原作者的分享. 但是injso文章中的代码存在一些问题,所以后面出现的代码是经过作者修改和检测的. ...

  7. python返回值与局部全局变量

    Python 2.7.10 (default, Oct 14 2015, 16:09:02) [GCC 5.2.1 20151010] on linux2 Type "copyright&q ...

  8. C++中为什么要将析构函数定义成虚函数

    构造函数不可以是虚函数的,这个很显然,毕竟虚函数都对应一个虚函数表,虚函数表是存在对象内存空间的,如果构造函数是虚的,就需要一个虚函数表来调用,但是类还没实例化没有内存空间就没有虚函数表,这根本就是个 ...

  9. javascript进阶系列专题:作用域与作用域链

    字面意思,作用域是指变量和函数的作用范围,换言之,作用域决定了变量和函数的可见性和有效时间.javascript作用域是用函数来区分,与其他语言的大括号不同. for (var i=0; i<5 ...

  10. Java-instanceof关键字

    一.instanceof 在编写代码过程中,如果不知道一个对象属于哪一个类,这时instanceof关键字起到决定性作用,他会以boolean(true\false)反馈结果 class A{ pub ...

随机推荐

  1. freeswitch笔记(8)-esl outbound 填坑笔记

    github上的esl-client已经N年未更新了,上面有一堆bug,记录一下: 一.内存泄露 org.freeswitch.esl.client.transport.message.EslFram ...

  2. Win10纯净版如何重装应用商店的问题

    有深度官网的朋友说安装的win10纯净版系统中找不到应用商店.说实话,应用商店是由微软运营的系统商店,可以放心下载安装应用,对用户而言可以说是十分便利了,那么win10纯净版没有应用商店应该怎么重装呢 ...

  3. 2023年3月最新全国省市区县和乡镇街道行政区划矢量边界坐标经纬度地图数据 shp geojson json

    发现个可以免费下载全国 geojson 数据的网站,推荐一下.支持全国.省级.市级.区/县级.街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3.Echarts等 geojso ...

  4. REPO 命令大全

    repo forall -c 'echo $REPO_PROJECT':得到所有仓库的名称 repo forall -c 'echo $REPO_PATH': 得到所有仓库的本地路径 repo for ...

  5. Matlab灰色预测模型

    灰色预测模型(Grey Prediction Model)是一种处理少量.不完全信息的预测方法,尤其适用于数据量少(≥4个)且趋势不明显的场景. 核心模型:GM(1,1) 通过累加生成序列挖掘数据内在 ...

  6. antv f2 横坐标改变排列角度旋转

    chart.axis("name", { label: { rotate: Math.PI / 3, textAlign: "start", textBasel ...

  7. ASP.NET Core 警惕可空类型开启之后模型校验失败

    在开启 Nullable 可空类型之后,原本可以调用的 API 也许就会提示 400 BadRequest 因为传入参数不合法,模型校验失败,此时将不会进入预期的 API 函数,同时也不会在输出里面找 ...

  8. windows防火墙出站规则只允许访问指定域名ip,其他出站ip全部阻止的方法

    https://blog.csdn.net/baozou_jianghuxing/article/details/125077779 需求背景: 公司内网的windows服务器因业务需要只需访问互联网 ...

  9. C#里事件和委托有什么区别啊

    一 .使用位置不同 事件只能在本类型内部"触发",委托不管在本类型内部还是外部都可以"调用". 二.使用符号不同 在类的外部,事件只能用"+=&quo ...

  10. 2. ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境

    原文地址: ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境 ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿 ...