如何使用JavaScript循环遍历数组中的所有条目?
我以为它是这样的:
forEach(instance in theArray)
Run Code Online (Sandbox Code Playgroud)
theArray我的阵列在哪里,但这似乎是不正确的.
我有一个在Linux上运行的C++应用程序,我正在优化它.如何确定代码的哪些区域运行缓慢?
我正在寻找一种非常快速,干净和有效的方法来获取以下JSON切片中的最大"y"值:
[
{
"x": "8/11/2009",
"y": 0.026572007
},
{
"x": "8/12/2009",
"y": 0.025057454
},
{
"x": "8/13/2009",
"y": 0.024530916
},
{
"x": "8/14/2009",
"y": 0.031004457
}
]
Run Code Online (Sandbox Code Playgroud)
for循环是唯一可行的方法吗?我热衷于某种方式使用Math.max.
我想知道对PHP脚本进行基准测试的最佳方法是什么.无论是cron作业,还是网页或Web服务都无关紧要.
我知道我可以使用microtime但是它真的给了我PHP脚本的实时时间吗?
我想在PHP中测试和基准测试不同的函数,它们做同样的事情.例如,preg_matchvs strpos或domdocumentvs preg_match或preg_replace vs str_replace`
网页示例:
<?php
// login.php
$start_time = microtime(TRUE);
session_start();
// do all my logic etc...
$end_time = microtime(TRUE);
echo $end_time - $start_time;
Run Code Online (Sandbox Code Playgroud)
这将输出:0.0146126717(一直变化 - 但这是我得到的最后一个).这意味着执行PHP脚本需要0.015左右.
有没有更好的办法?
根据这个答案'对象是空的吗?' :
// Speed up calls to hasOwnProperty
var hasOwnProperty = Object.prototype.hasOwnProperty;
Run Code Online (Sandbox Code Playgroud)
我在小型JavaScript库中看到过类似的几种实现,例如:
var slice = Array.prototype.slice;
//or
function slice(collection) {
return Array.prototype.slice.call(collection);
}
Run Code Online (Sandbox Code Playgroud)
我做了一个快速的jsperf测试这种事情,缓存看起来总体上比不缓存更快,但我的测试可能有缺陷.
(我使用'cache'这个词来表示将方法存储在变量中.)
这个问题的上下文是开发人员需要多次调用本机方法,以及可观察到的差异.
缓存本机方法是否会阻止引擎在每次调用方法时都必须查看该方法的对象内部,从而在开发人员需要多次调用相同的本机方法时,使缓存成为调用本机方法的更快方法?
为什么这不起作用?
<script type="text/javascript" src="//cdn.com/assets/js/jquery.js">
alert("Hello World!");
</script>
Run Code Online (Sandbox Code Playgroud)
但这样做呢?
<script type="text/javascript" src="//cdn.com/assets/js/jquery.js"></script>
<script type="text/javascript">
alert("Hello World!");
</script>
Run Code Online (Sandbox Code Playgroud)
这是从源代码中提取的许多HTML标记的一般性.微观优化在我的情况下很重要,我也很好奇.
通过优化,我的意思是例如在使用基本for循环与Array.prototype.forEach()基于哪个实现似乎在哪些浏览器中更快等等之间进行决定(并且在某些情况下,这可以扩展到微优化,他们认为这可能是危险的. )
以下是"为缩小而写作"的一个例子:
if(foo === bar) {
return true;
} else {
return false;
}
// writing the following instead, which reduces size by a few bytes
return foo===bar; //will return true or false, depending on what the statement evaluates to
Run Code Online (Sandbox Code Playgroud)
有些人可能认为使用该if else语句乍一看有点可读,但我会说第二种写作方式更好.
根据我的理解,就缩小而言,其最大的目的是减少服务器响应时间.
编写minifcation和服务器响应时间与可读性之间的平衡是什么,与写入"优化"?
Edit
One可能会将问题重新描述为写入优化与写入以使代码"缩小".
据我所知,PHP stdClass代码通常比数组更快,当代码深度嵌套足以让它真正重要时.如果我要进行类型转换以便动态定义stdClass对象,那么效率如何受到影响:
$var = (object)array('one' => 1, 'two' => 2);
Run Code Online (Sandbox Code Playgroud)
如果执行此操作的代码将被执行多次,那么我最好明确定义$var为对象:
$var = new stdClass();
$var->one = 1;
$var->two = 2;
Run Code Online (Sandbox Code Playgroud)
差异可以忽略不计,因为我$var将从那里作为对象访问,无论哪种方式?
编辑:
stdClass是我需要的数据类型.我不关心我是否应该使用数组或是否应该使用stdClass对象; 我更关心的是使用(object)array(....)实例化a 的简写stdClass是否有效.是的,这是代码,可能会被执行数千次.
考虑以下片段和运行结果:
片段 1:
let final_result, final_result2;
let start = new Date();
for(let i = 0; i < 100000000; i++) {
final_result = Math.pow(i + 1, 2);
}
let end = new Date();
console.log(end - start); // Output 1
let start2 = new Date();
for(let i = 0; i < 100000000; i++) {
final_result2 = (i + 1) ** 2;
}
let end2 = new Date();
console.log(end2 - start2); // Output 2Run Code Online (Sandbox Code Playgroud)
片段 2:
let final_result, final_result2;
let start = new …Run Code Online (Sandbox Code Playgroud)我在QT 5.6中使用c ++.我有两种风格的简单控制台应用程序如下:
//First style
qstring x = “Hi!”;
void func()
{
QTextStream(stdout) << x;
}
int main()
{
while (true)
{
func_one();
}
}
//Second style
void func()
{
QTextStream(stdout) << “Hi!”;
}
int main()
{
while (true)
{
func();
}
}
Run Code Online (Sandbox Code Playgroud)
这将更多地压缩cpu并因此具有较小的性能可能没有很大的区别但是当我们将其应用于大规模(例如服务器,其中每2秒进行一次连接时)它会产生类似于上面的循环的情况.多个变量(但不是相同的变量和数据)少一点资源使用可以在资源使用较少的情况下提高性能.所以使用变量会给出任何性能改进,但是我将在我的函数中只使用一次该变量,虽然函数将被重复调用,或者使用变量会使程序变慢,因为它必须重复检查ram中"x的值"的位置"存储然后检索数据?
编辑1:
我不会在我的代码中再次使用该变量,我们可以认为没有编译器优化.@DrDonut您给出的链接中的答案也没有回答是$array === (array) $array比is_array($array)它更快,即它是微优化还是我要问的是第二种风格的微优化还是它会损害性能.
javascript ×6
performance ×4
arrays ×2
c++ ×2
php ×2
profiling ×2
benchmarking ×1
foreach ×1
gprof ×1
html ×1
iteration ×1
json ×1
loops ×1
microtime ×1
object ×1
optimization ×1
profiler ×1
qt ×1
unix ×1
v8 ×1
validation ×1
variables ×1