【问题标题】:Fixed length array vs fields [closed]固定长度数组与字段[关闭]
【发布时间】:2014-01-05 15:40:31
【问题描述】:

什么更快? 我想编写一个 API 来处理和计算向量和矩阵。 “Matrix4f”需要 4*4 浮点值。 我应该把它写成 16 个字段还是二维数组? 但是如果我使用字段,继承是不可能的。

【问题讨论】:

  • 什么更快?这取决于。衡量,不要猜测。
  • 数组有 O(1) 的查找时间,应该不会相差太大。您真的要维护 16 个单独的字段吗?
  • 如果它快很多,那么是的,我想保持它。
  • 永远不要过早优化。首先以易于维护的方式编写代码。如果您想创建代码来处理矩阵和向量,那么数组应该是您的首选。
  • 更快的方法是更适合解决您的问题的方法。数组访问涉及额外的间接和边界检查(对于 2-dim 数组,每个检查两个),但这些都很便宜。我猜想声明/使用 16 个字段将涉及大量代码重复,并且在您完成之前会产生多个错误。另外,没有办法(除了非常低效的“反射”来在需要时以数组方式处理各个字段(毫无疑问)。

标签: java arrays performance field


【解决方案1】:

这更多的是可维护性问题而不是速度问题。您的两种选择之间的速度差异几乎肯定不会明显。然而,数组方法对于您要建模的内容更有意义,并且更容易处理(例如,您想创建一个 5x5 矩阵,那么您的数组代码将很容易重用,而您的包含 16 个字段的代码需要大刀阔斧的修改)。简而言之,在做这个决定时不要担心速度,而要担心什么更有意义,什么更容易管理;那么选择应该是明确的。

【讨论】:

    【解决方案2】:

    访问数组和访问变量并不复杂,O(1) 可以这么说。

    这不是您应该考虑的速度,而是您的实际算法和功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-17
      • 2012-06-14
      • 1970-01-01
      • 2011-05-30
      • 2020-04-20
      • 1970-01-01
      • 2011-05-18
      相关资源
      最近更新 更多