rust 使用derive(Eq)与derive(Serialize)比较结构的速度

4sup72z8  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(144)

我很好奇调用Eq::eq来比较两个大向量,与将两个向量序列化为一个字符串并比较输出字符串相比,要快多少。
我在这里做了一个基本的速度测试:https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=73fc1cc61873fa70566eb7b2bf0793f9
在release-mode中,对于包含10万个简单结构的向量,结果如下:
1.按Eq::eq(x, y)比较:20毫秒
1.按serde_json::to_value(x) == serde_json::to_value(y)比较:172毫秒
1.按serde_json::to_string(x) == serde_json::to_string(y)比较:34毫秒
这些结果让我有点吃惊;我没想到一直序列化到字符串会和Eq::eq的派生实现一样快。
我的速度测试在某些方面有缺陷吗?如果没有,那么如何解释为什么Eq::eq(x, y)方法没有速度优势,因为它似乎应该有更少的工作要做?

相关问题