在做leetcode反转链表的时候,发现了一个问题。迭代方法,我定义全局变量和局部变量next指针的运行时间是不同的。
全局变量是24ms,局部变量是花了8ms。
一开始我想的是局部变量的话,创建销毁的代价不想承担(调用构造函数和析构函数),但是实际而言,这点代价还没有 去寻址该变量所花费的时间代价大。
原因:
从rics角度来说,就是在于局部对象存放在栈中,容易被cache命中,可以利用栈帧来进行对像存取(一条指令即可);而对于全局对象则需要更多指令来进行存取(两到3条)
在做leetcode反转链表的时候,发现了一个问题。迭代方法,我定义全局变量和局部变量next指针的运行时间是不同的。
全局变量是24ms,局部变量是花了8ms。
一开始我想的是局部变量的话,创建销毁的代价不想承担(调用构造函数和析构函数),但是实际而言,这点代价还没有 去寻址该变量所花费的时间代价大。
原因:
从rics角度来说,就是在于局部对象存放在栈中,容易被cache命中,可以利用栈帧来进行对像存取(一条指令即可);而对于全局对象则需要更多指令来进行存取(两到3条)