使用 RapidJSON
花了一个周末的时间从 JsonCpp
换到了 RapidJSON
,后端的 RPS 飙升,增加了大概 40%(其实主要是因为换成了 SAX 风格的序列化),以列出帖子为例,大概从 50K 升到了 70K。在这里吹一波 RapidJSON
,也不知道有没有人会看。
https://github.com/miloyip/rapidjson
但是 70K RPS 离 LevelDB
的理论上限还差得远,不知道我哪里写崩了,估计又要花上一个周末时间检查。在那之前可能考虑把 tinyxml2
换成 RapidXML
,为了保持库文件命名一致性。
顺便,有一次用 wrk 测试的时候 URL 写错了,全都是返回 404,直接搞出来个 1.8M RPS,吓得我差点尿裤子…
还有几个功能没有实现,一个是搜索,后端已经写完了,前段不知道怎么设计。至于评论是完全没有动,估计最后就是上 Disqus 了。
接下来一段时间,可能这就是我唯一一个能获得一点乐趣的项目了,剩下的也都没什么时间。竞赛成绩出了以后,简直印证了那句老话:九年 OI 一场空。要是我还有心情的话另外写一写吧。
2016 / 12 / 15 更新
研究了一下,发现是自己写的比较器写崩了…居然还用了字符串分割,分配内存。真不知道自己当时是怎么想的了… 还做了一个比较小的优化:用 SAX 风格的解析器解析 JSON,这个做完以后在 DEBUG 下在我们学校电脑飞到了 100K 了,嘻嘻。
在下一步如果还要优化的话估计只能直接在解析以后立刻往缓冲区里面写,或者直接在 SAX 部分忘缓冲里面写了。这就涉及修改 API 了,放假再写。到时候还要在列出帖子的时候加个总页数,因为要改一下换页的操作。现在只能一页一页翻,简直 SB。