A3、限制函数内部循环使用局部变量的数目,最多不超过12个
2013-03-30 21:55
253 查看
应该尽量限制函数内部循环所用局部变量的数目,最多不超过12个,这样,编译器就可以把这些变量都分配给ARM寄存器;编译器会试图对C函数中的每一个局部变量分配一个寄存器。如果几个局部变量不会交迭使用,那么编译器会对它们分配同一个寄存器。当局部变量多于可用的寄存器时,编译器会把多余的变量存储到堆栈。由于这些变量被写入了存储器,所以被称为溢出或者替换(swapped out)变量,就像虚拟存储器的内容被替换到硬盘一样。与分配在寄存器中的变量相比,对溢出变量的访问要慢得多。
解决多变量问题:将多个相关的参数组织到一个结构体中,传递一个结构体指针来代替多个参数。
typedef struct{
char *Q_start,
char *Q_end,
char *Q_ptr,
}Queue;
void queue_bytes(Queue *queue, Char *data,unsigned int N)
{
Char * Q_ptr = queue->Q_ptr;
Char * Q_end= queue->Q_end;
do
{
*(Q_ptr ++) = * (data ++);
if (Q_ptr == Q_end)
{
Q_ptr = queue -> Q_start;
}
}while( -- N);
queue -> Q_ptr = Q_ptr;
}
解决多变量问题:将多个相关的参数组织到一个结构体中,传递一个结构体指针来代替多个参数。
typedef struct{
char *Q_start,
char *Q_end,
char *Q_ptr,
}Queue;
void queue_bytes(Queue *queue, Char *data,unsigned int N)
{
Char * Q_ptr = queue->Q_ptr;
Char * Q_end= queue->Q_end;
do
{
*(Q_ptr ++) = * (data ++);
if (Q_ptr == Q_end)
{
Q_ptr = queue -> Q_start;
}
}while( -- N);
queue -> Q_ptr = Q_ptr;
}
相关文章推荐
- 使用VB生成没有限制的函数DLL zz
- iphone 内部函数使用 (函数可能无法响应的部分解决方案)
- Block 内部使用self 如何防止内存循环引用
- 练习 3-1 在上面有关折半查找的例子中,while循环语句内共执行了两次测试,其实只要一次就足够(代价是将更多的测试在循环外执行)。重写该函数,使得在循环内部只执行一次测试。
- smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
- js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称
- (转载)Qt 的线程与事件循环——可打印threadid进行观察槽函数到底是在哪个线程里执行,学习moveToThread的使用)
- 解析在内部循环中Continue外部循环的使用详解
- Oracle游标使用达到最多限制报错
- SharePoint2016母版页的直接依赖项的数目限制超过10的限制解决方案Direct Dependencies Limit with Master page User Controls
- 想要在SQL语句中可以使用用户自定义的函数,那么这样的用户定义函数有哪些限制?
- 使用 libdvm.so 内部函数dvm* 加载 dex
- 循环与判断/利用函数的简单实例/使用对象/列举对象属性
- 使用neon内部函数实现8-way de-interleave
- 在循环中使用Select 函数,进行等待超时的使用注意点
- 如何在c#winform的文本框限制只能输入汉字,并且汉字的个数最多不能超过4个!
- uploadify多个文件上传,删除后提示超过最多限制
- c++11 函数内部返回对象使用move语义的最佳实践
- struts2中form表单使用post方式提交参数(键值对)超过10000的限制
- C# 函数方法内部实现循环调用自身