【问题标题】:Arrays for matrices and vectors in JavaJava中矩阵和向量的数组
【发布时间】:2018-08-21 00:36:10
【问题描述】:

我必须为某些课程(使用 Java)实现渲染引擎(基于光线追踪)。已经提供了一些课程(但我可以随意更改我想要的所有内容)。有一些矩阵/向量类型的类都为每个元素使用单独的变量。对于 4x4 的矩阵,它看起来很丑,在我看来是反面向对象的。我会使用二维数组。但是 Java 会自动进行绑定检查。如果我使用数组而不是单独的变量,这会严重影响性能吗? (我知道性能和 Java 并不总是匹配,但它必须在 Java 中。)或者是否可以关闭此安全功能?

【问题讨论】:

  • 4x4 Matrix 类有 16 个独立的浮点成员字段(例如:float m02,m03,..),而不是单个 float[4][4] 数组。我想将单独的变量更改为一个二维数组。但是如果我想访问实例元素 (i,j),Java 会自动检查 (i,j) 是否在数组的范围内。所以我的问题是,从长远来看,这是否会成为一个巨大的性能瓶颈(在具有 +-1000000 个顶点的模型上进行光线跟踪)。

标签: java arrays rendering raytracing


【解决方案1】:

Java 确实会自动检查数组边界。这很好,不会对性能产生任何影响。

我知道性能和 Java 并不总是匹配,但它必须是 在 Java 中。

这是真的,也不是真的。 Java 确实被编译为字节码,然后被解释。然而,java 有很多特性可以优化你的代码,包括即时编译,所以在某些测试中,java 比本地代码运行得更快。

最后一点:阅读Premature optimization is the root of all evil

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2016-02-22
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    相关资源
    最近更新 更多