ICS malloc lab总结

本文总结了ICS malloc实验室的要求和常见解法,包括使用BST/平衡树以达到高性能,以及各种链表策略的优缺点。作者分享了自己的解决方案,通过显式链表、最小块优化、分离适配和维护块大小单调性,实现了99/100的高分。
摘要由CSDN通过智能技术生成

ICS malloc lab总结


lab要求

你要实现一个malloc系列函数,并且实现比较好的性能以获得分数,衡量函数性能的标准为内存空间利用率(util,总共61分)及分配算法的时间复杂度(thru,总共39分)。

PKU的标准是92% util+13000Kops thru是满分,如果你某一项少了就要扣分,但是如果你某一项少到一定程度或者某一个应该分配成功的trace分配失败了(往往因为为了追求thru而造成过多的外部和内部碎片),那么你的整个lab就0分了。

注意:thru吞吐量单位为每秒,而不是每时钟周期,所以不同人电脑上CPU主频不一样, 所以同样的程序在不同电脑上得分不一样, 不过不用担心不公平,因为最后得分都是以服务器主频为标准的。


lab主要解法

历史上大家都认为为了得到满分(98+/100),写一个单个操作平均复杂度O(logN)的BST是必要的,甚至有时候BST退化严重的话,是得不到满分的,所以只有平衡树比较保险。(所以很多人做之前先参考网上代码,写了一个平衡树,导致malloc lab网上流传的答案全是平衡树或BST版本,大家为了拿满分,都采用了平衡树,代码也都差不多。
当然,学习别人的代码在自己写是没有问题的,但是希望大家不要抄袭,像malloc lab你自己写和抄袭别人的代码再改一改(封装一些语句为函数,把代码改写为同义语句,改变模块顺序等伎俩),根本骗不过Stanford moss查重系统,而shell lab被发现相似度高问题还不大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值