【问题标题】:Which is better to use frequently in objects: Vector2f or 2 floats在对象中经常使用哪个更好:Vector2f 或 2 个浮点数
【发布时间】:2014-06-30 06:20:55
【问题描述】:

我目前正在为我的 GUI 元素编写一些代码,并且在编写用于检测鼠标是否在元素内的代码时,我想到了效率,不仅是现在,而且是将来。目前我正在使用 Vector2f 来处理尺寸和位置,因为通过调用 getDimensions 等函数可以轻松地将它们传入和传出函数,这些函数只返回 Vector2f 等等。不过,我的问题是我是否在使用一般的 Vectors 和特别是 Vector2f 时浪费了。在我的对象中为 x 和 y 设置两个浮点数,为宽度和高度设置两个浮点数,或者使用两个向量,一个用于位置,一个用于尺寸。

主要担心的是创建 Vector 对象比仅使用原始浮点数占用更多空间。我查看了 Vector2f 和 3f 类的来源以获得想法,它们似乎很轻,但我对不同对象占用多少内存以及如何确定我会问那些可以更容易理解手头的问题。

提前感谢您的任何和所有答案!

【问题讨论】:

  • 您尝试过任何测量方法吗?
  • 假设您有 1000 个 GUI 元素(这已经很多),并且每个都有 2 个 Vector2f 实例。一个对象有 8 个字节的开销。这意味着总共有 1000 * 2 * 8 字节的开销。 16 KB 的内存绝对不算什么。
  • 我从未尝试过任何形式的测量,也不知道如何进行 358 但如果我这样做了,那将是我会做的第一件事,所以谢谢! JB 谢谢你的信息。开销之类的东西是我不知道的东西,也是我在这里问的原因!

标签: java object memory vector floating-point


【解决方案1】:

一般答案是:坚持使用对象,因为它们使您的代码可读。

如果您确实需要节省内存,请阅读An overview of memory saving techniques in Java (by Mikhail Vorontsov)。数组消耗 12 个字节加上它们的长度乘以它们的元素大小。包装器占用底层类型额外的 12 个字节。

在你的情况下:

  • Vector2f:16 字节
  • 浮点数[2]:16 个字节
  • 2 个浮点数:8 个字节

【讨论】:

  • 非常感谢您提供的链接和信息,尤其是坚持对象的提示。很高兴知道它不会有太大的不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
相关资源
最近更新 更多