摘要: class FCriticalSection{ CRITICAL_SECTION CriticalSection;public: FORCEINLINE FCriticalSection(void) { InitializeCriticalSection(&CriticalSection); } FORCEINLINE ~FCriticalSection(void) { DeleteCriticalSection(&CriticalSection); } FORCEINLINE void Lock(v... 阅读全文
posted @ 2012-05-01 14:39 littlepearl 阅读(824) 评论(0) 推荐(0) 编辑
摘要: 计算 2Λ(n-1) < v <2Λ(n-1)uint32_t RoundUpPow2(uint32_t v) { v--; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; return v+1;}判断是否是2的n次幂bool IsPowerOf2(int v) { return (v & (v - 1)) == 0;} 阅读全文
posted @ 2012-04-17 10:27 littlepearl 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 最近使用Visual studio突然变慢,帧率由100多变成6-7.最终发现是打了很多断点所致,最好每次运行的时候clear一下所有断点。 阅读全文
posted @ 2012-04-09 10:21 littlepearl 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 1。概念(见于Baidu) 内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。 内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。2.Bullet内存池(btPoolAllocator.h) 内存池可以是反复的new delete更有效率,而且很有 阅读全文
posted @ 2012-04-08 15:41 littlepearl 阅读(264) 评论(0) 推荐(0) 编辑
摘要: void *operator new( size_t, void *p ) throw() { return p; }这个是堆内存进行分配调用。如果需要对内存分配进行不同的分配策略,则需要重载operator new。这样做,我们可以预先分配好一大块内存,按照程序需求进行管理。比如gb中小内存的分配。如果需要在已经分配的内存上面建立一个对象则需要进行placement new,这个只是operator new的另一种实现,这样提高分配速度(new的时候需要在堆中查找可以分配的空间),因为内存之前已经分配好,不需要进行当前内存大小是否符合本次分配。但需要重点注意申请是需要显示调用构造和析构函数, 阅读全文
posted @ 2012-04-05 18:32 littlepearl 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 我的博客园开张了,记录每天学习,工作。 阅读全文
posted @ 2012-04-02 18:15 littlepearl 阅读(99) 评论(0) 推荐(0) 编辑