📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
查看: 1484| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

【求参与】大家在最困难时是怎么挺过来的?

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
想听国外小伙伴的些励志故事~

上一篇:一到了节日就会倍感孤独是我太矫情吗
下一篇:12.8睡了半个上午
推荐
lalxyy 2020-12-14 02:28:51 | 只看该作者
全局:
本帖最后由 lalxyy 于 2020-12-13 13:33 编辑

这个事情有点久远了,和现在上课的情况应该有点出入。这个事除了因为作业很难,重要的原因还是自己大意了。

上15-513(用CSAPP做教材)这门课的时候有一个作业是自己设计栈内存分配并实现malloc,叫做malloc lab. 这个作业分成两个阶段,评估内存占用率和运行时间时采用不同的指标。第一个阶段的性能要求非常容易达到,按照课上ppt的要求去写代码就能过。当时是大学毕业后的暑假,写了两三天代码过了第一个checkpoint之后误以为malloc lab不过如此,就把作业放下了,一直到final due的前五天才慢慢开始提升自己代码的性能。我本以为非常简单,final test吃了几个零蛋之后傻眼了。

malloc lab的精妙之处就在于除非你动手实现自己的方案,很难靠思考推理出来最终的内存占用情况,因为测试样例实在是太庞大,而且malloc lab需要同时支持模拟32 bit和64 bit的内存分配,还需要注意计算过程中是否有bit溢出了。当时我最有信心的方案是先把内存分配成较大的单位(比如0x100 bytes),在这些较大的内存块上保留head和tail元信息,然后再将大内存块拆分给小内存。但是实际测试的时候发现要么很难追踪小内存块的占用情况导致内存浪费进而stack overflow,要么使用很多时间在分配小的内存块上导致执行超时,两个问题永远不能同时解决。因为此前摸鱼摸大了,这个方案确定不可行的时候,只有不到三天到final ddl(而且我已经用过late day了),我开始感到一种透心凉的绝望,因为这个作业在513成绩占比非常高,如果按此时零分上交作业,此后513哪怕及格可能都很困难。

那几天基本是不想睡觉也不想吃饭。每天早上睁开眼睛,似乎漂浮的是各种malloc的可能实现方案,并且脑子里面不由自主地分析一个算法需要多长时间实现,预期的性能是多少。预估出来的往往不准,但是当全身心动员起来就为了解决这一个问题的时候,我发现很难让自己冷静下来。为了缓解压力,我开始看一些快手老铁类的视频,就是为了把自己的情绪调动起来,哪怕当时看过一些视频就是嘿嘿一笑就过去了而对于作业没有任何的收获,我都会感到非常满足,能够把自己从一蹶不振的深渊中拉回来。

最后我无意中在很多方案里面尝试了把最初版本的内存分配中的head和tail精简一下,节省这些区域一半的内存使用,最终分数到了98%。那个时候我已经没有兴趣做任何改进了,匆忙写了代码注释,修改了coding style,然后就把代码扔给测试网站了。随之而来的是紧张的心理状态结束之后扎心的胃痛,很久才消失。


回复

使用道具 举报

🔗
Dannyzhang 2020-12-8 14:07:22 | 只看该作者
全局:
想到后面还有更困难的,就不觉得现在困难了
回复

使用道具 举报

🔗
notme 2020-12-14 01:17:24 | 只看该作者
全局:
就瞎几把挺
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表