假定循环内用时较多,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豪秒

结论:用时基本相同


相关文章
|
3月前
|
语音技术 Python
语音识别,continue和break的使用,循环综合案例,完成发工资案例,函数的初体验,len()是内置好的函数,def 函数名 def xxx(),函数的定义 def xxx() ,调用函数
语音识别,continue和break的使用,循环综合案例,完成发工资案例,函数的初体验,len()是内置好的函数,def 函数名 def xxx(),函数的定义 def xxx() ,调用函数
|
12月前
下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。
下列给定程序中函数fun的功能是:统计substr所指的子符串在str所指的字符串中出现的次数。
|
Serverless
递归访问目录,嵌套函数,递归函数map函数,filter函数,reduce函数
一、递归访问目录: 且目录中嵌套目录,有层次的列出给定目录中所有的文件和文件夹
72 0
|
C++ Windows
VS2019错误:_main已经在.obj中定义,找到一个或多个重定义符号
VS2019错误:_main已经在.obj中定义,找到一个或多个重定义符号
1022 0
|
存储 编译器
初始化函数的另一种写法
利用编译器的特性,在程序编译时将各模块初始化函数顺序存放到内存的指定地址,然后在程序运行时main函数从这块内存区域中,依次调用各模块的初始化函数,自动完成各个模块的初始化工作,同时增强了程序的高内聚低耦合特性,提高了软件的质量。
初始化函数的另一种写法
写一个函数,每调用一次这个函数,就会将num的值增加1
写一个函数,每调用一次这个函数,就会将num的值增加1
103 0
写一个函数,每调用一次这个函数,就会将num的值增加1
复习C部分:1.写一个函数,实现整形有序数组二分查找 2.写一个函数,每调用一次这个函数,就会将num的值增加1 3.函数的嵌套调用和链式访问 4. 函数递归----自己调用自己
复习C部分:1.写一个函数,实现整形有序数组二分查找 2.写一个函数,每调用一次这个函数,就会将num的值增加1 3.函数的嵌套调用和链式访问 4. 函数递归----自己调用自己
79 0
复习C部分:1.写一个函数,实现整形有序数组二分查找 2.写一个函数,每调用一次这个函数,就会将num的值增加1 3.函数的嵌套调用和链式访问 4. 函数递归----自己调用自己
用int main检验任意函数,如(func)函数
用int main检验任意函数,如(func)函数
92 0
用int main检验任意函数,如(func)函数