注册变量

sam*_*kar 2 c++ recursion

我有一个涉及很多递归的C++代码.我正在考虑为我的变量使用寄存器类.你认为通过这样做我将节省堆栈内存并将提高性能

谢谢

萨米尔

Dav*_*eas 8

我敢打赌,编译器不会尊重你的请求.假设您有一个局部变量,并且递归调用该函数100次.如果要尊重所有自动变量'register'关键字,则只需要100个硬件寄存器(所有变量在第100次调用时都是活动的)

性能是一个难题.分析程序在哪里花时间并尝试在那里进行优化,但要谨慎:某些决策可能无法获得收益,有些决策最终会导致性能下降.正如之前提到的,编译器非常擅长他们的工作.将变量强制转换为寄存器意味着要使用的其余变量少一个寄存器.


小智 6

不,我认为它可能根本没有效果.现代编译器在调度寄存器使用方面通常比人类好得多,并且可能会忽略"register"关键字.

话虽如此,找出的唯一真正方法是编写一些代码并使用register关键字测量其性能,如果没有它 - 代码更改是微不足道的.