繁体   English   中英

C++ 如果我知道几个可能的确切类型,我应该使用什么类型?

[英]C++ what type should I use if I know the exact type from a few possible?

希望你能帮助我理解。 我有一个 class,它定义了一个缓冲区:

typedef std::variant<signed char, unsigned char, short, unsigned short, int, unsigned int, float> BufferData;

struct BufferAttribute {
  unsigned int index;
  int size = 4;
  char format = ATTRIBUTE_FORMAT::FLOAT;
  bool normalized = false;
  int stride = 0;
  int offset = 0;
  std::vector<BufferData> data;
  std::string name;
};

如您所见,我有一个定义格式的char ,所以将来我会知道确切的数据格式。 但至于数据,我使用了一个变体,这让我担心访问者的表现。 我可以使用什么类型使它更快或更好? 还是您认为Variant是一个不错的选择?


PS 我担心在我的游戏应用程序中实时处理来自这个缓冲区的数千个数字。

如果您担心性能,则必须在用例中对其进行衡量。 一般陈述性能往往是错误的,或者可能会随着下一个编译器版本和/或硬件一代而过时。

这里已经分析了 std::variant 的一般性能。

如果这适用于您是有问题的。 您必须确保BufferAttribute中的“std::variant”实际上是您的热点。 您可以使用perfvTune等工具找到热点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM