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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions