作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个小类(在 32 位系统上为 16 个字节),我需要动态分配它。在大多数情况下,任何给定实例的生命周期都很短。一些实例也可能跨线程边界传递。
完成一些分析后,我发现我的程序似乎花费了更多的时间来分配和取消分配这些东西,而不是实际花费在使用它们上,所以我想用更高效的东西替换默认的 new 和 delete。
对于一个大对象(碰巧的数据库连接,构造起来比分配起来更昂贵),我已经在使用池系统,但是它涉及一个用于存储“空闲”对象的列表,以及一个互斥锁为了线程安全。在互斥量和列表之间,它实际上比小对象的基本 new/delete 表现更差。
我在谷歌上发现了一些小对象分配器,但是它们似乎使用了一个全局/静态池,它不是以线程安全的方式使用的,所以它们不适合我使用:(
对于此类小对象的高效内存管理,我还有哪些其他选择?
最佳答案
也许尝试使用 Google 的 tcmalloc ?它针对线程程序中的快速分配/取消分配进行了优化,并且对小对象的开销较低。
关于c++ - 高效地分配许多短命的小对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2156745/
我是一名优秀的程序员,十分优秀!