1.比赛结果
2.比赛整体感觉
初赛的题目是写一个代理实现高性能的协议解析和转发,复赛是是实现一个单机的100g的mq存储。
题目都和io有关,自己实际在比赛过程中,实现了一套能跑的方案后,后续优化的效果不明显,例如
初赛第一版6140qps,后续只优化到6470qps。
复赛第一版67w,后续只优化到115w。
在初期我的排名还能进前20,后面就迅速被n多人超越。
其实关键效果的提升,都是以好的方案为基础,调参和细节优化,提升的并不明显,所以当落后第1梯队的时候,肯定是方案有瑕疵,所以竞赛的关键
是方案优化,针对痛点的优化,不要过于依赖随机的测试。要学会在比赛中学习,学习用到比赛,提高成绩。
第1版方案很重要,其实如果一开始差距太大,对于后期自己能不能赶上,是有自我效能的降低。
对于自己的技术水平过于自信,对于别人的水平预判过低,思想上就没有重视对手。
3.比赛欠缺的东西
关键有效方案的优化,拿复赛举例子,如果把写缓冲和lru做了的话,预期应该能上180w。
当时没做,是用mmap方式发现加大buffer对于效果无明显提升,事后想想其实是mmap导致,如果用pwrite等系统api追加
效果应该会有提升,所以好的方案应该是符合常理,如果不符合常理应该是自己用的有问题。
把性能追求极致,之前工作总感觉用性价比最高的方式实现是有好处的,其实这样不适合比赛,因为比赛是以成绩为导向,只有把
性能追求到极致,才能竞争过别人,这个追求极致不是把n多细节优化到极致,而是大的方案基本对路,关键点做到位,其实进20不难。
不能因为方案复杂就放弃,可以考虑用开源等等。
珍惜好时间,尤其是复赛的时间,非常宝贵。
4.比赛好的方面
工程实现方面,复赛基本实现了bugfree,发现小问题,也基本能很快解决
把一个不太会的东西,通过测试,上线,整个流程还是很快,比如mmap的应用
复赛熬了3天到晚上2点,战斗意志很高。