当前位置: 首页 > 面试题库 >

Array vs ArrayList的性能

金昌胤
2023-03-14
问题内容

Object类型的Array和Object类型的ArrayList之间的性能哪一个更好?

假设我们有一个Animal对象数组:Animal animal[] 和一个数组列表:ArrayList list<Animal>

现在我正在做 animal[10]list.get(10) 哪一个应该更快,为什么?


问题答案:

很显然,array [10]比array.get(10)更快,因为后者在内部进行相同的调用,但是增加了函数调用的开销以及其他检查。

但是,现代JIT会在某种程度上优化它,您几乎不必担心此,除非您的应用程序具有非常关键的性能,并且这已成为瓶颈。



 类似资料:
  • 问题内容: 每次执行此查询需要200毫秒以上的时间: 但这每次在第一次查询后每次执行只需要2-3毫秒: 注意在两个查询中相同的ID值。看起来第二个查询使用第一个查询的缓存结果。但是,为什么第一个查询不能使用缓存的结果本身?从第一个查询中删除不会更改任何内容。 当我使用其他ID执行第二个查询时,第一次执行该查询大约需要40毫秒,此后每次需要2-3毫秒。因此,第二个查询不仅运行速度更快,而且还缓存结果

  • 问题内容: 我想知道使用 构造函数构造BigInteger* 对象的性能/ 复杂性 。 * 请考虑以下方法: 此方法在开头创建带有数字的String对象,并且每次迭代都会增加它的数量。它测量并输出构造相应对象所需的时间。 在我的机器(Intel Core i5 660,JDK 6 Update 25 32位)上,输出为: 尽管忽略了高达10 ^ 5的行(由于(处理器)缓存效果,JIT编译等可能引入

  • 问题内容: 我分两个步骤运行MYSQL查询。首先,通过一个查询获取ID列表,然后使用第二个查询沿的方式检索这些ID的数据。我知道这听起来很骇人听闻,但是由于查询非常复杂,我已经这样做了。第一个涉及许多几何和触发法,第二个涉及许多不同的联接。我确定它们可以在单个查询中编写,但是我的MYSQL不足以实现它。 这种方法有效,但是 感觉 不对。再加上我担心它不会扩展。目前,我正在10,000个记录的数据库

  • 问题内容: 我考虑了以下有关计算机体系结构的问题。假设我在Python中做 这需要log n,再加上,如果我理解正确,内存复制操作x[index:]。现在我最近读到,瓶颈通常是处理器与内存之间的通信,因此可以通过RAM快速完成内存复制。它是如何工作的? 问题答案: Python是一种语言。存在多种实现,并且它们可能具有列表的不同实现。因此,如果不查看实际实现的代码,就无法确定列表的实现方式以及它们

  • 问题内容: 编码我来检查Java的vararg性能。 我编写以下测试代码: 在我的机器上,平均输出为: 似乎将变量传递给方法是免费的!好! 但是使用varags慢60倍!为什么呢 一种解释可能是程序必须在堆上创建数组,而时间是由GC花费的。但是对于更少的循环,我仍然得到输出: 什么花费了这些额外的时间,反正编译器拥有将其解决为fix变量调用的所有信息… 这不是我打算为此进行优化的意图,但是我发现这

  • 对比为了极限的看出Yaf框架的性能如何, 作者并没有和其他框架做对比, 而是和原生的PHP做对比, 测试代码如下: 例 1.1. 1.测试用原生的PHPorig.php <?php class IndexController { public function actionIndex() { echo "Laruence"; } } $controller = new Inde

  • 问题内容: 我试图弄清楚当我们使用nio FileChannel和normal FileInputStream/FileOuputStream来读写文件到文件系统时,性能(或优势)是否存在任何差异。我观察到,在我的机器上,两者的性能都相同,而且FileChannel速度也慢了很多倍。我能否请你比较这两种方法的更多详细信息。这是我使用的代码,正在测试的文件在左右350MB。如果我不考虑随机访问或其他

  • 我们在ignite中面临着间歇性的性能问题,响应时间变得非常高,我们在日志中看到了下面的错误。我们有10个索引列,我没有看到索引有任何问题,因为“where”子句中的所有列都被索引了。联接发生在具有亲和性共定位的字段上,这意味着联接只发生在特定节点中的数据上,而不发生在Across ;节点上。 请让我知道你是否能在这方面提供任何帮助。  > Apache Ignite版本:2.7.5 启用Igni