fun2比fun1稍快点
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稍快点的更多相关文章
- 一步步学习javascript基础篇(8):细说事件
终于学到事件了,不知道为何听到“事件”就有一种莫名的兴奋.可能是之前的那些知识点过于枯燥无味吧,说起事件感觉顿时高大上了.今天我们就来好好分析下这个高大上的东西. 可以说,如果没有事件我们的页面就只能 ...
- Python学习Day2笔记(字符编码和函数)
1.字符编码 #ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位#中文编码为GBK 操作系统编码也为GBK#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一 ...
- C++基础知识面试精选100题系列(11-20题)[C++ basics]
[原文链接] http://www.cnblogs.com/hellogiser/p/100-interview-questions-of-cplusplus-basics-11-20.html [题 ...
- 浅谈spring 声明式事物
此处主要讲讲事物的属性. 事物属性包含了五个方面: 1.传播行为 2.隔离规则 3.回滚规则 4.事物超时 5.是否只读 一.传播行为 事务的第一个方面是传播行为(propagation behavi ...
- jQuery中多个元素的Hover事件
1.需求简介 jQuery的hover事件只是针对单个HTML元素,例如: $('#login').hover(fun2, fun2); 当鼠标进入#login元素时调用fun1函数,离开时则调用fu ...
- linux下实现在程序运行时的函数替换(热补丁)
声明:以下的代码成果,是参考了网上的injso技术,在本文的最后会给出地址,同时非常感谢injso技术原作者的分享. 但是injso文章中的代码存在一些问题,所以后面出现的代码是经过作者修改和检测的. ...
- python返回值与局部全局变量
Python 2.7.10 (default, Oct 14 2015, 16:09:02) [GCC 5.2.1 20151010] on linux2 Type "copyright&q ...
- C++中为什么要将析构函数定义成虚函数
构造函数不可以是虚函数的,这个很显然,毕竟虚函数都对应一个虚函数表,虚函数表是存在对象内存空间的,如果构造函数是虚的,就需要一个虚函数表来调用,但是类还没实例化没有内存空间就没有虚函数表,这根本就是个 ...
- javascript进阶系列专题:作用域与作用域链
字面意思,作用域是指变量和函数的作用范围,换言之,作用域决定了变量和函数的可见性和有效时间.javascript作用域是用函数来区分,与其他语言的大括号不同. for (var i=0; i<5 ...
- Java-instanceof关键字
一.instanceof 在编写代码过程中,如果不知道一个对象属于哪一个类,这时instanceof关键字起到决定性作用,他会以boolean(true\false)反馈结果 class A{ pub ...
随机推荐
- AI-Compass(AI百科全书开源):构建最全面的AI学习与实践生态,服务AI全群体
AI-Compass(AI百科全书开源):构建最全面的AI学习与实践生态,服务AI全群体 AI-Compass将为你和社区提供在AI技术海洋中航行的方向与指引.无论你是刚踏入AI领域的初学者,还是寻求 ...
- 【自动配置魔法】Spring Boot Starter设计哲学剖析 + 实战自定义Starter全指南
Spring Boot Starter 的设计原理 Spring Boot Starter 的核心设计目标是简化依赖管理和自动配置,通过约定优于配置的原则,减少开发者的手动配置工作.其设计原理主要包含 ...
- Win11系统任务栏图标怎么隐藏的问题
不少电脑基地的小伙伴,在使用win11系统觉得任务栏中有的图标没什么用,就想要隐藏但却不知道要如何操作,那么碰到这种问题要怎么办呢?下面技术员小编就来分享具体的设置方法,大家一起来看看详细方法吧. 在 ...
- Hibernate Type源码解析
type 的类图 AssociationType: 关联类型的 type,主要用于外键等相关 IdentifierType: 主键相关的类型 type BasicType: 基础类型,例如 long, ...
- CentOS 7部署Kerberos的实战详解
以下是CentOS 7部署Kerberos的实战详解,整合了多篇权威指南的核心步骤与关键配置要点: 一.环境准备 系统要求 CentOS 7及以上版本,至少2GB内存. 时钟同步 ...
- VMware使用过程中出现了虚拟机繁忙问题
记录下这个问题,这个问题的原因是VMware15以下版本和win10系统不兼容,将VMware版本升级到15.1以上即可解决问题.
- 5、rt-thread学习-env下menuconfig配置项目
1.项目配置工具,menuconfig,menuconfig是一个简单易用的图形化配置工具,用来对内核和组件功能进行配置和裁剪,使得系统像搭积木的方式进行构建,自动生成rtconfig.h. 2.我们 ...
- SpringBoot系列之异步任务@Async使用教程
@ 目录 实验环境准备 github用户信息类 异步任务配置类 查询github用户信息业务类 启动测试类实现 自定义异步任务异常 例子翻译自国外的两篇博客: https://www.baeldung ...
- 西门子 Smart ECX 与 MyEMS:智慧能碳管理平台的技术路径与生态差异深度解析
在全球碳中和战略加速推进的背景下,企业对能源与碳管理数字化工具的需求日益迫切.西门子 Smart ECX 智慧能碳管理平台与 MyEMS 开源能源管理平台作为行业内的代表性解决方案,分别代表了商业闭源 ...
- MyEMS开源能源管理系统核心代码解读019
MyEMS开源能源管理系统适用于建筑.工厂.商场.医院.园区的电.水.气等能源数据采集.分析.报表,还有光伏.储能.充电桩.微电网.设备控制.故障诊断.工单管理.人工智能优化等可选功能.资深专业团队开 ...