缓存vector.empty()价值是否有意义?
Vector<X> list;
...
if(!list.empty()){ // cmp + jnz
...
// some heavy calculations
...
list.pop_back();
}
Run Code Online (Sandbox Code Playgroud)
VS
Vector<X> list;
bool list_empty;
...
if(!list_empty){ // jnz
...
// some heavy calculations
...
list.pop_back();
list_empty = list.empty(); // cmp
}
Run Code Online (Sandbox Code Playgroud)
哪里
bool List::empty(){
return last_ptr == first_ptr; // implementation from gcc's std
}
Run Code Online (Sandbox Code Playgroud)
我认为缓存更好,因为在list不为空的情况下,只需要1 op进行比较.另外cmp,它应该从内存中获取两个值,而for jnz,只有一个.
PS Vector就是一个很好的例子.这种逻辑可以出现在另一种情况中.