文章目录
利用cache的特点进行遍历
如果是struct数组:
sttuct Test
{
int a;
int b;
};
Test test[1000];
for(int i=0;i<1000;++i)
{
process(test[i].a);
process(test[i].b);
}
如果是独立的数组:
int a[1000];
int b[1000];
for(int i=0;i<1000;+++i)
{
process(a[i]);
}
for(int i=0;i<1000;+++i)
{
process(b[i]);
}
预先申明stl容器大小,避免之后push_back时的扩容,重新分配空间
Vector<Node*> vecForShrink = createVector();
vecForShrink.reserve(100);
利用宏进行开关
#ifdef OPEN_LOG
...
#endif
优先级分成3组进行排序 更新,cocos2dx的事件、rendercommand队列都使用了
特殊的random函数
/**
A more effect random number getter function, get from ejoy2d.
*/
inline static float RANDOM_M11(unsigned int *seed) {
*seed = *seed * 134775813 + 1;
union {
uint32_t d;
float f;
} u;
u.d = (((uint32_t)(*seed) & 0x7fff) << 8) | 0x40000000;
return u.f - 3.0f;
}
RANDOM_M11(&RANDSEED);
RAII,利用类个构造进行++,析构进行–
class DispatchGuard
{
public:
DispatchGuard(int& count):
_count(count)
{
++_count;
}
~DispatchGuard()
{
--_count;
}
private:
int& _count;
};
使用:
DispatchGuard guard(_inDispatch);