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秒左右。

时间: 2024-10-08 05:23:08

fun2比fun1稍快点的相关文章

fun2比fun3稍快点

运行环境:WinXP VS2005(VC8) 核心代码: #include <iostream> using namespace std ; #include <time.h> #define WAN (10000) const int iNum = WAN*WAN*3; 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]

javascript基础:逻辑运算符

1.&&/||返回能够被转换为布尔值的值 &&操作符不一定返回布尔值true/false,但总是返回一个能转换为布尔值的值,这决定于用于比较的是什么值. 非0数字转为true,数字0转为false,null.undefined转为false,对象.数组.函数表达式.非空字符串转为true,空字符转为false,函数执行时返回计算结果. 注意即使是空数组或不含任何属性的对象都返回true. 含有NaN类型的比较返回NaN. &&的操作顺序是从左至右,当左边的计

向后兼容

1 package com.cn; 2 3 class A{ 4 public void fun1(){ 5 System.out.println("A fun1"); 6 } 7 public void fun2(){ 8 fun1(); 9 } 10 } 11 class B extends A{ 12 public void fun1(){ 13 System.out.println("B fun1"); 14 } 15 public void fun3(){

JavaScript函数部分补充

之前说了函数的调用,现在再来说说函数的另外几个重要概念: 闭包:函数内部可以访问函数外部的变量,函数外部不能访问函数外部的变量.为了打破这种“不公平”,就产生了闭包. 首先看一个简单的例子: var fun1= function () { var m=10; var inFun= function () { return m; } return inFun; } var f=fun1(); alert(f()); 这就是一个最基本的闭包例子了,在这个例子中,闭包可以理解成为是java中的get函

多进程与多线程

一 进程与线程的概念 1.1 进程 考虑一个场景:浏览器,网易云音乐以及notepad++ 三个软件只能顺序执行是怎样一种场景呢?另外,假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作),而此时CPU只能静静地等待任务A读取完数据才能继续执行,这样就白白浪费了CPU资源.你是不是已经想到在程序A读取数据的过程中,让程序B去执行,当程序A读取完数据之后,让程序B暂停.聪明,这当然没问题,但这里有一个关键词:切换. 既然是切换,那么这就涉及到了状态的保存,状态的恢

python\进程和线程2

1  GIL全局解释器锁定义 定义:在一个线程拥有了解释器的访问权后,其他的所有线程都必须等待他释放解释器的访问权,即这些线程的下一条指令并不会互相影响. 缺点:多处理器退化为单处理器 优点:避免大量的加锁解锁操作 无论你启多少个线程,你有多少个cpu,python在执行一个进程的时候会淡定的在同一时刻只允许一个线程运行. Python是无法利用多核cpu实现多线程的 总结: 对于计算密集型任务,python的多线程并没有用 对于IO密集型任务,python的多线程是有意义的 python使用多

golang goroutine、channel和select

goroutine package main import "fmt" import "time" func printn(id int){ for i := 0;i<10;i++ { fmt.Println(id,":",i) } } func main(){ for i :=0;i<5;i++ { go printn(i) } fmt.Println("waiting...") time.Sleep(time.

关于闭包的理解

发表一下关于闭包的理解:首先把每一个函数看成一个一个的"小黑屋"小黑屋里面可以看到外面的东西,但外面却看不到小黑屋里面的东西,就好比是函数可以访问外面全局变量,但是外面却访问不了"小黑屋"里面的变量:变量分为全局变量和局部变量:列:函数可以访问外面全局变量 var a=1; function fun1(){ alert(a); }fun1(); // 1 列:外面却访问不了"小黑屋"里面的变量 function fun2(){ var a=2;

探索c++对象模型(一)

C++中虚函数的诞生,就是为了多态的实现.当子类对父类的虚函数进行了重写,在父类指针调用重写的虚函数时,如果父类指针(或引用)指向了父类的对象,则调用父类的虚函数,如果父类指针(或引用)指向了子类对象,则调用子类的虚函数. 要想了解多态的实现,就必须要知道虚函数表的构成. [注:文章中代码测试环境为Win7 64位 VS2013] 首先,我们讨论单个含有虚函数的类,即不存在继承关系. 当我们的类中含有虚函数时,类实例化出来的对象,他的成员除了自己的成员变量外,还会多出一个指针.这个指针我们称为虚