gpt4 book ai didi

C++ - boost 获取问题

转载 作者:可可西里 更新时间:2023-11-01 18:35:04 26 4
gpt4 key购买 nike

有人知道 boost::get对于 boost::variant是一个消耗性能的操作或者不是。

现在我正在重构一个性能关键部分中的一些旧代码,其中“变体”是由容器为每种可能的类型和相应的 enum 实现的。 .

显然,这很快,但很丑,现在当我必须重构代码以便它可以与另一种类型一起工作时,我想摆脱旧的代码部分并且将其替换为 boost::variant .

此外,我不能简单地“分析两个变体并进行比较”,因为这种重构很麻烦,而且会非常耗时。

所以,如果有人知道如何boost::get<x>执行与通用 enum-based 的比较类型调度,如果您能分享这些知识,我将不胜感激。

还有另一种使用 boost::variant<types> 的变体使用自定义访问者(如 boost::variant 文档中所述)- 这可能比 boost::get 更快就我而言?

谢谢。

最佳答案

您仍然可以编写一个简单的测试应用程序来比较两者,它不一定是生产环境。

我的一位同事最近遇到了与此类似的问题。在他的场景中有不同类型的对象,但他总是事先知道他期望的是哪种类型。他的数据结构也很大,所以内存是个问题。他使用 void *reinterpret_cast 解决了这个问题。这可以防止多态性的内存开销并且速度非常快。不过,您必须绝对确定自己在做什么,否则事情会爆炸。

关于C++ - boost 获取问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com