编程语言中的常量折叠(const folding)
来源:互联网 发布:linux修改字符集为gbk 编辑:程序博客网 时间:2024/05/16 12:49
深度学习框架theano的文档中说,theano支持const folding
。在google上搜索const folding
,提示更多的是一种编译器的编译优化技术
。常量折叠(const folding
)的本质仅仅是一种编译器所提供的编译优化技术。
考虑这样一段代码:
for (int i = 0; i < 200*800*700; ++i){ // 循环体}
该循环的条件(i<200*700*800)是一个表达式(expression),如果放到判断时再求值那么200*700*800的计算将会进行112000000次。如果编译器在语法分析阶段进行常量合并,该循环将会变为这样:
for (int i = 0; i < 112000000; ++i){ // 循环体}
我们再来看一次没那么直观的例子,本质仍然针对常量进行的常量折叠:
const int i = 0;int* pi = const_cast<int*>(&i); // const_cast消除常量性*pi = 5;cout << "&i = " << &i << ", pi = " << pi << std::endl;cout << "i = " << i << ", *pi = " << *pi << std::endl;
诡异的事情发生了:
&i = 001EF788, pi = 001EF788i = 0, *pi = 5
可见这里的常量(被const修饰)i
的值被放入常量表中,输出时输出的是常量表中对应的值。而在运行阶段,它在内存里存的实体也确确实实改变了,但这并未影响常量表对中对应的值。
0 0
- 编程语言中的常量折叠(const folding)
- 常量折叠 Constant folding
- Constant folding 常量折叠
- C++ 常量折叠和C语言中const常量对比
- const常量折叠
- C++const/常量折叠
- c++学习----const常量折叠
- Android Folding View(折叠视图、控件)
- const 可折叠常量和不可折叠常量
- c++中的常量折叠
- c++中的常量折叠
- c++中的常量折叠
- C++中的常量折叠
- C语言中的const用法以及常量指针与指针常量(有口诀!)
- 【C++常量折叠】改改const试试 _alibaba
- const变量-常量折叠-符号表
- c++中的常量折叠 ,const与define是属于预编译的时候就被解析
- C++中的常量折叠问题
- Median of Two Sorted Arrays
- 用最小堆实现优先队列
- 通过api查看android控件属性
- iOS开发技巧--使用CocoaPods创建、删除第三方框架
- 语言字符串操作函数 - strcpy、strcmp、strcat、反转
- 编程语言中的常量折叠(const folding)
- 关于KEA128看门狗的几点说明
- AndroidManifest文件详细学习
- Socket编程服务端可能出现阻塞的位置,以及解决方法
- git使用入门以及一些问题
- 数组---(一维、二维数组,求最值,排序)
- eclipse导入hadoop示例源码on ubuntu14.04
- 常用适配器SimpleAdapter
- javase-反射字段学习记录