vs2010 在函数级别设置优化

平时开发的时候,为了方便调试,visual studio 的Configuration 设置成Release。

同时为了事后调试,Optimization总是设置成Disabled。这样做是方便查看变量的数值。

但遇到计算密集的功能实现,优化关闭还是挺费时间的。

void calc(int nMax)
{
    int nTotal = 0;
    for (int index = 0;index < nMax;index++)
    {
        nTotal = 0;
        for (int subIndex = index;subIndex < nMax+index;subIndex++ )
        {
            nTotal += subIndex;
        }
    }
}

  

 

最初我的想法是project的优化关闭,相关文件的优化打开,测试后发现没有什么作用。

参考visual studio的帮助后,发现可以针对函数进行优化。

这样做考虑其他方法依旧可以事后调试。

在函数前后增加  #pragma optimize即可

#pragma optimize( "gs", on )
void calc(int nMax)
{
    int nTotal = 0;
    for (int index = 0;index < nMax;index++)
    {
        nTotal = 0;
        for (int subIndex = index;subIndex < nMax+index;subIndex++ )
        {
            nTotal += subIndex;
        }
    }
}
#pragma optimize( "gs",  off )

  

经过测试,针对函数的优化,性能和project优化相当。

未优化前:0.67秒

优化后:0.00秒

这样以后事后调试还是很方便的。

测试环境:

ide:vs2010

项目:console

Configuration :Release。

Optimization:Disabled

实现代码:

#include "stdafx.h"
#include <Windows.h>

#pragma optimize( "gs", on )
void calc(int nMax)
{
    int nTotal = 0;
    for (int index = 0;index < nMax;index++)
    {
        nTotal = 0;
        for (int subIndex = index;subIndex < nMax+index;subIndex++ )
        {
            nTotal += subIndex;
        }
    }
}
#pragma optimize( "gs",  off )

void retry(int nMin)
{
    int nTry = 0;
    nTry = nMin;
}

int _tmain(int argc, _TCHAR* argv[])
{
    LARGE_INTEGER	freq				= {0};
    LARGE_INTEGER	beginPerformanceCount	= {0};
    LARGE_INTEGER	closePerformanceCount	= {0};

    QueryPerformanceFrequency(&freq);

    QueryPerformanceCounter(&beginPerformanceCount);
    calc(10000);
    QueryPerformanceCounter(&closePerformanceCount);

    retry(2020);
    double delta_seconds = (double)(closePerformanceCount.QuadPart - beginPerformanceCount.QuadPart) / freq.QuadPart;
    printf("%f",delta_seconds);
    getchar();
	return 0;
}

  

相关链接:

https://msdn.microsoft.com/en-us/library/chh3fb0k(v=vs.100).aspx

时间: 2024-10-22 02:58:45

vs2010 在函数级别设置优化的相关文章

PHP错误级别设置

错误报告级别:指定了在什么情况下,脚本代码中的错误(这里的错误是广义的错误,包括E_NOTICE注意.E_WARNING警告.E_ERROR致命错误等)会以错误报告的形式输出. 设置错误报告级别的方法: 1. 修改PHP的配置文件php.ini 这种方式设置error_reporting后,重启web服务器,就会永久生效.打开配置文件php.ini,查看错误报告级别error_reporting的默认值,如下: error_reporting=E_ALL & ~E_DEPRECATED &

函数的调用优化

函数的调用优化 在类中有四大成员函数,构造函数,拷贝构造函数,赋值函数和析构函数,在类外进行实例化时,若调用函数的方法不当则会产生时间和空间的浪费. 以下,将用几个小栗子来说明函数的调用优化的常见办法 类: class Test { public: Test(int d = 0) : _data(d) { cout << "Create Test Object:"<<this << endl; } Test(const Test&x) :_d

Linux零基础入学之1-3 RHEL7基本命令操作和启动级别设置

§Linux零基础入学之1-3 RHEL7基本命令操作和启动级别设置 [本节内容] *Linux终端介绍 *shell提示符 *Bash shell基本语法 *基本命令的使用:ls.pwd.cd *查看系统折BIOS设置 *Linux如何获得帮助 *Linux关机命令:shutdown.init 0等 *Linux 7个启动级别 *设置服务器在来电后自动开机 [Linux终端介绍] tty    控制台终端 pts    代表虚拟终端 tty1-tty6 > 刚进入的图形界面(桌面)为tty1

Linux的/etc/inittab文件中init级别设置成6(重启)或者不支持级别的解决方法

如果不小心将/etc/inittab文件中的init级别设置成6(重启)或者不支持级别,系统就不能正常启动.本博客讲解如何通过Grub来解决这个问题. 1. 在Linux启动过程中,按Esc键进入Grub界面 2. 按e修改当前Linux系统的配置 3. 选择第二行,按e键,并按如下步骤执行 1)在出现的命令行后加1(单用户模式): 2)按Enter键接收操作并后退到当前Linux配置页面: 3)按b重启Linux. 4. 重启后进入Linux系统,修改/etc/inittab文件.将init级

误把Linux运行级别设置为6后的解决方法【转】

本文转载自:http://www.wuji8.com/meta/841011126.html 误把Linux运行级别设置为6后的解决方法 我们知道,Linux有7个运行级别,而运行级别设置为6后,会导致Linux系统刚启动完成就立刻重启,重启后又会立刻重启,如此反复,导致系统不能正常运行.本文笔者和大家分享一下误把Linux运行级别设置为6后如何解决的经验.我们一起开始吧! 工具/原料 装有Linux系统的电脑 方法/步骤 在Linux系统启动读秒的过程中,如下图所示,立刻按下键盘上的“E”键(

禁用php函数的设置

禁用php函数的设置 打开PHP.INI,找到这行: disable_functions = 在后面那里加上要禁用的函数,如禁用多个函数,要用半角逗号 , 分开 给个例子: disable_functions = passthru,exec,system,popen,chroot,scandir,chgrp,chown,escapesh ellcmd,escapeshellarg,shell_exec,proc_open,proc_get_status 建议在主机上禁用的函数: disable_

写日志函数和持续优化

首先看下面的函数 <span style="font-size:18px;">void writelog(char* file, char* msg) { FILE*fp=NULL; int nDataLen = strlen(msg); fp=fopen(file,"ab+");//只供读取 if(fp!=NULL) { fwrite(msg, nDataLen, 1, fp); } fclose(fp);//关闭文件 }</span> 这

需求用例分析之二:级别设置

在<编写有效用例>(阿莱斯特-科伯恩著,下面用科伯恩用例来指代)一书中,赋予了用例不同的级别,科伯恩形象的设定了例如以下级别:海平面.云朵.风筝.蛤等等. 科伯恩建议用例级别分为多个个目标层次:概要.用户目标.子功能,书写需求用例时,仅仅能选择其一,以下对其详细说明: 概要:包含多个用户目标,它有"显示相关目标的生命周期顺序"和"为低层用例提供一个文件夹表"的功能,概要用例通常须要运行几个小时.几天.几个星期.几个月.甚至几年. 用户目标:它是主运行者努

(转)js函数参数设置默认值

原文:http://www.cnblogs.com/RightDear/archive/2013/06/26/3156652.html js函数参数设置默认值 php有个很方便的用法是在定义函数时可以直接给参数设默认值,如: function simue ($a=1,$b=2){   return $a+$b; } echo simue(); //输出3 echo simue(10); //输出12 echo simue(10,20); //输出30 但js却不能这么定义,如果写function