1、 收集测试数据用于性能评价;2.2. 数据结构/*内存空闲分区结构块*/typedef struct node int addr; /空闲分区的首址 int size; /空闲分区的大小 int status; /空闲分区的状态blockblock* arry_empty_block2048;block* arry_apply_block2048;2.3. 性能指标计算指标1:countcount为平均每次申请分配内存时查找符合内存大小的次数。计算公式: query_apply_count:总的查询比较次数apply_count:总的申请分配内存次数指标2:raterate为每1000次对存储
2、设备操作后的平均内存利用率。all_rate:总的对内存每次操作后的内存利用率之和all_conut:对内存的操作次数包括回收和分配3. 程序清单1:变量解释/*full:空闲分区的状态为满*empty:空闲分区的状态为空*mix:允许产生的最大申请块*min:允许申请的最小申请块*memory_size:初始内存大小(256M-56M)*memory_locate:累计内存使用量*query_count_all:累计比较次数*memory_empty_count:空闲分区的内存块数*memory_apply_count:申请成功的内存块数2:空间利用率函数*函数名:*功能: 求空间利用率*返
3、回值 double*参数: 无*函数实现double rate() int sizeloction=0; for (int i = 0; i size+ sizeloction; return double(double(sizeloction) / 204800);3:正态分布随机函数*函数名称:radomNumber产生服从正态分布的一组随机数*函数参数:int average(平均数), int variance(方差)*返回值:int *函数实现:/ 根据均值和方差算正态分布随机数 double u = (double)rand() / (RAND_MAX) * 2 - 1; doub
4、le v = (double)rand() / (RAND_MAX) * 2 - 1; double r = u * u + v * v; if (r = 0 | r 1) return radomNumber(average, variance); double c = sqrt(-2 * log(r) / r); double result = (u * v) * variance + average; return (int)result;4:内存空间初始化函数/*ChuShiHuaNC 内存空间初始化函数,构造空闲分区数组无void ChuShiHuaNC() memory_locat
5、e = 0; /累计内存使用量置0 query_count_all = 0; /累计比较次数置0 memory_apply_count = 0; /累计申请分配次数置0 memory_empty_count = 1; /空闲分区的内存块数置0 block* block_start = (block*)malloc(sizeof(block); block_start-size = memory_size;addr = 0; /空闲分区的首址置0status = full; arry_empty_block0 = block_start;5首次适应算法函数/*FirstFit 首次适应算法 in
6、t size 分配内存空间的大小int 申请的内存空间的起始地址*函数流程图:int FirstFit(int size) int returnResult; int flag = 0; int location_temp; for (int i=0;isize; if (size ceshi) i+; else if(size =arry_empty_blocki-size) location_temp = i; flag =1 ; break; else if(size addr; arry_apply_blockmemory_apply_count = arry_empty_blocklocation_temp; memory_apply_count+; /在空内存数组中去掉该内存块 if (location_temp = memory_empty_count - 1) memory_empty_count-; else for (int j = location_temp; j size = size;addr = arry_empty_blocklocation_temp- bl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1