【问题标题】:Create more variables or calculate when passing arguments to function在将参数传递给函数时创建更多变量或计算
【发布时间】:2016-01-09 14:00:52
【问题描述】:

所以我有一个性能问题。是声明更多变量然后将它们作为参数传递还是在将其作为函数的参数传递时计算它更好。我举个例子:

shapeRenderer.rect(gameWidth/32 -(border/2) + gameWidth/60,gameHeight/18 - (border/2), gameWidth/3 + border ,gameHeight/30 + border);

由于这个函数每帧都被调用,这是否意味着它被计算为 50 fps,一遍又一遍地计算 50 次?如果我在构造函数中声明新变量会提高性能吗,例如:

float x = gameWidth/32 -(border/2) + gameWidth/60;
float y = gameHeight/18 - (border/2);
float width = gameWidth/3 + border;
float height = gameHeight/30 + border;

然后调用函数:

shapeRenderer.rect(x, y, width, height);

因为我假设要绘制 100 个矩形,这将导致 400 个变量(每个矩形都有不同的位置和尺寸)。这会提高性能吗?

【问题讨论】:

  • 这是一个实例变量中的函数调用,被多次调用,还是在代码的不同位置多次调用?
  • 每帧都会调用一次。

标签: java function libgdx rendering draw


【解决方案1】:

如果您的矩形具有固定的尺寸/位置,则最好在初始化矩形时预先计算值,但如果这些值可以更改,您将不得不重新计算所有内容。

建议:

只要您没有性能问题,不建议 尝试微调您的应用程序。

【讨论】:

  • 尺寸有些固定。假设100个矩形有100个固定尺寸,它们永远不会改变,那么你建议在构造函数中声明400个变量吗?
  • 声明 400 个变量绝对不是要走的路。如果您有那么多矩形,您应该考虑将这些值保存在数组中。例如。你可以有 4 个 double 类型的数组:xCoordinates、yCoordinates、widths、heights。但是,我认为只要您的应用程序运行良好,您就不必担心性能。
  • 我喜欢数组idea.ty
【解决方案2】:

在构造函数中声明新变量应该更快。但也很有可能由于 JVM 执行的优化,您不会感受到速度执行的好处。

【讨论】:

    【解决方案3】:

    不,不会。如果您查看 java ByteCode,说明将是相同的。

    【讨论】:

      猜你喜欢
      • 2017-10-16
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 2019-07-22
      相关资源
      最近更新 更多