Skip to content

[讨论]关于多次内存分配占用运行时间过长的问题 #94

@duguying

Description

@duguying

在测试hashmap(我实现成hashtable了,对hashmap待了解)的运行时间时,总是发现运行时间总是难以降下,一次偶然发现N次printf造成了占用时间的问题,后来为了进一步减小运行时间进行了删减测试,去掉其他部分只留要测试的子函数,最终觉得应该是内存分配上出了问题。后来我对malloc进行了专门的测试。数据量500KK(即N=500 000 000)

  • for循环中malloc一个结构体(假设大小4char)。
  • 直接malloc(4*N)。

结果很明显,前者时间远大于后者。后来在两中操作中添加strncpy操作,目的是将申请到的内存全填满。结果还是前者时间远大于后者。
我在想,对于大量数据的操作中是否如我所测的多次malloc的效率远低于一次malloc。并且,我是否应该选择另外的方式来分配内存,比如自建内存池封装malloc,这样做的话会有一些什么问题,或者说大家是否有更好的方法。(我还没有仔细研读malloc函数的实现) @daimajia @Dodolong

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions