c语言测试内存有关的函数,关于c语言realloc函数分配的内存上限测试

关于c语言realloc函数分配的内存上限测试

1.测试环境

2.测试方法之一,使用realloc函数不断分配更多的内存

2.1测试方法

2.1.1 首先使用malloc分配51.2MB内存

2.1.2. 然后反复调用执行下面的步骤,看看可分配的内存上限是多少.

2.2.测试结果

3.测试方法之二,使用C++的vector.resize()方法,不断分配更大的内存

3.1.方法.反复调用vector的resize成员函数,每次分配更大的空间,增量为51.2MB

3.2.测试结果

1.测试环境

OS: Ubuntu 18.04, kernel 5.0.0-27, 64位

RAM:DDR3 8GB*2=16GB, 1600MT/S

CPU: Intel® Xeon® CPU E5-2670 0 @ 2.60GHz

编译器:gcc 7.3.0

2.测试方法之一,使用realloc函数不断分配更多的内存

2.1测试方法

2.1.1 首先使用malloc分配51.2MB内存

2.1.2. 然后反复调用执行下面的步骤,看看可分配的内存上限是多少.

2.1.2.1 调用realloc函数分配更大的空间,增量为51.2MB

2.1.2.2 realloc完成后,调用memset将分配的内存清0

2.2.测试结果

2.2.1.开始,可用内存13GB左右,swap分区使用率为0%

2.2.2.调用realloc,多数情况下,只需10-30微秒,少数情况则需要500多微秒.

2.2.3. memset则比realloc慢得多,且随着尺寸的扩大,memset越来越慢.

当尺寸达到8GB,需要1秒.

当尺寸达到13GB,需要1.5秒

当尺寸达到15.8GB,需要2秒.

当尺寸达到16.18GB,需要4.27秒

当尺寸达到16.23GB,需要5分钟

2.2.4交换分区的使用

当尺寸达到13.9GB左右,开始使用swap分区

当尺寸达到15.25GB,swap分区使用量达到236MB

当尺寸达到16GB左右,swap分区使用量达到1GB

当尺寸达到16.28GB左右,swap分区使用量达到1.3GB

3.测试方法之二,使用C++的vector.resize()方法,不断分配更大的内存

3.1.方法.反复调用vector的resize成员函数,每次分配更大的空间,增量为51.2MB

3.2.测试结果

3.2.1.开始,可用内存13GB左右,swap分区使用率为0%

3.2.2.调用vector的resize,速度与空间大小没有明显的关系,在大部分情况下,可以在0.02秒以内完成.

3.2.3.调用resize的参数超过13.1GB时,抛出异常std::bad_alloc

3.2.4.在整个过程,swap分区的使用量始终为0%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值