善用AssumeNoAliasing编译选项

zjj是男是女

zjj是男是女

2016-02-19 19:26

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的善用AssumeNoAliasing编译选项教程,一起来看看吧!超容易上手~

据说,如果过程能够2次或多次引用同样的内存地址,那么过程就会包含别名数值。一个典型的例子如下:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

Dimg_GlobalVariableAsLong

...

SubProcWithAliases(xAsLong)

x=x 1

g_GlobalVariable=g_GlobalVariable 1

EndSub

如果传递给这个过程g_GlobalVariable变量,则将通过一个直接引用以及x参数两种方式修改变量的数值2次。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

别名数值经常是不良编程习惯的产物,对于程序优化有害无益。事实上,如果能够完全确认应用程序从来没有使用到别名变量,就可以打开"AssumeNoAliasing"高级编译选项,这将告知编译器没有过程可以修改同一内存地址,使编译器产生更加有效率的汇编代码。更特别的是,编译程序将试图缓冲这些数据到CPU的寄存器中,从而明显地加速了程序运行。

总结一下,当遇到以下情况时,就不会有别名数值:(1)过程不引用任何全局变量(2)过程引用了全局变量,但从来不通过ByRef参数类型传递同一变量给过程(3)过程含有多个ByRef参数类型,但从来不传递同一变量到其中的2个或者多个之中。

->

展开更多 50%)
分享

猜你喜欢

善用AssumeNoAliasing编译选项

编程语言 网络编程
善用AssumeNoAliasing编译选项

VC编译选项

编程语言 网络编程
VC编译选项

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

PHP 的编译配置详细选项

PHP
PHP 的编译配置详细选项

善用EditPlus构建精悍的C#编译环境

编程语言 网络编程
善用EditPlus构建精悍的C#编译环境

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

善用 SELECT INTO 功能

SQLServer
善用 SELECT INTO 功能

加速编译

编程语言 网络编程
加速编译

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

快速初始化Variant和String类型数组

快速初始化Variant和String类型数组

jsp中forword和sendRedirect的区别

jsp中forword和sendRedirect的区别
下拉加载更多内容 ↓