Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 数组长度问题_Optimization_Compiler Optimization - Fatal编程技术网

Optimization 数组长度问题

Optimization 数组长度问题,optimization,compiler-optimization,Optimization,Compiler Optimization,这个问题与优化有关。假设在代码中的两个位置需要数组A的数组长度。我应该在这两个位置使用函数a.length(),还是将a.length()的值赋给局部变量并在这两个位置使用它会更快 我所说的“更快”是指运行时间。而且,我是在渐进地说话。什么语言?在许多语言中,这样的调用(在编译时或通过JIT编译器)被优化为直接访问数组对象的长度字段。什么语言?在许多语言中,这样的调用都经过优化(在编译时或通过JIT编译器),直接访问数组对象的长度字段。两次调用函数的渐进复杂性是相同的-对相同的函数调用的任何常量

这个问题与优化有关。假设在代码中的两个位置需要数组A的数组长度。我应该在这两个位置使用函数a.length(),还是将a.length()的值赋给局部变量并在这两个位置使用它会更快


我所说的“更快”是指运行时间。而且,我是在渐进地说话。

什么语言?在许多语言中,这样的调用(在编译时或通过JIT编译器)被优化为直接访问数组对象的长度字段。

什么语言?在许多语言中,这样的调用都经过优化(在编译时或通过JIT编译器),直接访问数组对象的长度字段。

两次调用函数的渐进复杂性是相同的-对相同的函数调用的任何常量数(纯)相同参数上的函数具有与该函数的单个调用相同的渐近复杂性,因为您可以将常量调用数滚动到big-O的隐藏常量中


至于什么会更快,也不能保证哪一个会更快。这取决于语言和编译器。我建议用两种方式写,并对结果进行计时,看看是否有明显的差异。也就是说,如果您编写的内容对性能非常关键,以至于您无法调用
.length()
两次,那么您可能需要重新考虑您的方法,看看是否有更好的全局解决方案。除非您有令人信服的理由相信您的程序在未优化的版本中明显较慢,否则微优化很少值得付出努力。

两次调用函数的渐进复杂性是相同的-对同一个函数的调用次数是任意恒定的(纯)相同参数上的函数具有与该函数的单个调用相同的渐近复杂性,因为您可以将常量调用数滚动到big-O的隐藏常量中


至于什么会更快,也不能保证哪一个会更快。这取决于语言和编译器。我建议用两种方式写,并对结果进行计时,看看是否有明显的差异。也就是说,如果您编写的内容对性能非常关键,以至于您无法调用
.length()
两次,那么您可能需要重新考虑您的方法,看看是否有更好的全局解决方案。除非你有令人信服的理由相信你的程序在未优化的版本中明显较慢,否则微优化很少值得付出努力。

如果你不得不问这个问题,你还没有到关键的时候。如果是的话,您已经有了您分析过的代码,您可以试试看。这类事情在很大程度上取决于您的语言和编译器,唯一重要的结果是您看到的结果


在你发现需要减少周期之前,不要担心微优化,即使这样,算法也是第一件要检查的事情。

如果你必须问这个问题,你还没有到关键的时候。如果是的话,您已经有了您分析过的代码,您可以试试看。这类事情在很大程度上取决于您的语言和编译器,唯一重要的结果是您看到的结果


在您发现需要缩短周期之前,不要担心微优化,即使这样,算法也是首先要检查的。

什么语言和什么数据类型?什么语言和什么数据类型?