Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Javascript 当我们更改执行顺序时,performance.now()返回不同的值_Javascript_Performance_Performance Testing - Fatal编程技术网

Javascript 当我们更改执行顺序时,performance.now()返回不同的值

Javascript 当我们更改执行顺序时,performance.now()返回不同的值,javascript,performance,performance-testing,Javascript,Performance,Performance Testing,我只是想看看使用|(双管,短路操作符,应该更快)而不是|时的性能差异 但结果并没有给出实际性能改进的细节。如果我们只是对下面的代码重新排序..首先使用执行控制台日志,那么它将显示比另一个更多的时间 使用此方法或任何其他方法,我如何看到性能差异?而且 有人能解释一下为什么我们改变订单时会有差异吗 如果performance.now()的行为是这样的,我看不出使用它有什么意义 请帮忙。谢谢:) var t3=performance.now(); 控制台日志(1 |(1), 1 || (0),

我只是想看看使用
|
(双管,短路操作符,应该更快)而不是
|
时的性能差异

但结果并没有给出实际性能改进的细节。如果我们只是对下面的代码重新排序..首先使用
执行控制台日志,那么它将显示比另一个更多的时间

  • 使用此方法或任何其他方法,我如何看到性能差异?而且

  • 有人能解释一下为什么我们改变订单时会有差异吗

    如果
    performance.now()的行为是这样的,我看不出使用它有什么意义

  • 请帮忙。谢谢:)

    var t3=performance.now();
    控制台日志(1 |(1),
    1 || (0),
    1 || (-1),
    1 | |(“字符串”),
    1 || (""),
    1 | |(空),
    1 | |(未定义),
    1 | |(console.log(3)),
    1 | |(无穷大))
    var t4=性能。现在();
    log(“使用(双精度)调用”| |“花费”+(t4-t3)+“毫秒”);
    var t0=performance.now();
    控制台日志(1 |(1),
    1 | (0),
    1 | (-1),
    1 |(“字符串”),
    1 | (""),
    1 |(空),
    1 |(未定义),
    1 |(console.log(3)),
    1 |(无穷大))
    var t1=performance.now();
    log(“使用单个| take“+(t1-t0)+”毫秒进行的调用”)
    
  • 使用此方法或任何其他方法,我如何看到性能差异
  • 有人能解释一下为什么我们改变订单时会有差异吗
  • 做很多测试。单个测试(尤其是耗时很少的测试)极有可能受到浏览器或操作系统的干扰,这些操作系统可能会在任何时候决定暂停执行、执行其他操作,然后再回来
  • 让环境暖和起来。几乎所有输入/输出(如
    console.log
    )都需要初始化,这将在第一次使用时完成,这很容易将测量的性能破坏几个数量级
  • 去掉所有不属于你测试的东西。如果要比较
    |
    |
    ,则不要在正在计时的块中包含
    控制台.log
  • 一些演示:

    运行以下代码几次。注意:

  • 通常(但并非总是)第一次需要更长的时间。那是初始化
  • 有时,一个所花的时间是另一个的数倍。那是干扰
  • var t3=performance.now();
    控制台日志(“herp”);
    var t4=性能。现在();
    var t0=performance.now();
    控制台日志(“derp”);
    var t1=performance.now();
    log(“与herp的调用花费了”+(t4-t3)+“毫秒”);
    log(“用derp调用需要”+(t1-t0)+“毫秒”)
    
  • 使用此方法或任何其他方法,我如何看到性能差异
  • 有人能解释一下为什么我们改变订单时会有差异吗
  • 做很多测试。单个测试(尤其是耗时很少的测试)极有可能受到浏览器或操作系统的干扰,这些操作系统可能会在任何时候决定暂停执行、执行其他操作,然后再回来
  • 让环境暖和起来。几乎所有输入/输出(如
    console.log
    )都需要初始化,这将在第一次使用时完成,这很容易将测量的性能破坏几个数量级
  • 去掉所有不属于你测试的东西。如果要比较
    |
    |
    ,则不要在正在计时的块中包含
    控制台.log
  • 一些演示:

    运行以下代码几次。注意:

  • 通常(但并非总是)第一次需要更长的时间。那是初始化
  • 有时,一个所花的时间是另一个的数倍。那是干扰
  • var t3=performance.now();
    控制台日志(“herp”);
    var t4=性能。现在();
    var t0=performance.now();
    控制台日志(“derp”);
    var t1=performance.now();
    log(“与herp的调用花费了”+(t4-t3)+“毫秒”);
    
    log(“用derp调用需要”+(t1-t0)+“毫秒”)@Siguza不能解释我的问题。(我的错,我选择的傻瓜在严肃的性能测试方面很糟糕。)与任何和所有性能测试一样,你应该1)执行测试至少几千次(如果不是几百万次),2)预热环境,也就是说,在开始测量时间之前,执行数千个您想要测试的操作,并且3)确保将输入/输出功能(即所有
    控制台.log
    )移出测量块,除非您确实想要测量它们。与此无关,为什么要将
    |
    |
    进行比较?他们做的事情不一样。
    |
    |
    做的几乎一样。但是如果left为true,则
    |
    不会检查右侧表达式。所以应该有表现improvement@Mendax因为你的性能测试很差
    console.log
    很容易花费的时间是您所有计算的100倍,第一次调用它可能会触发初始化,而第二次调用它的时间是您的100倍。这就是我所说的“温暖环境”的意思。同样,一次调用并不具有代表性。你应该收集很多(成千上万)的样本,然后看看平均值。其他任何东西都是随机和不可靠的。还要注意,
    (按位OR)和
    |
    (逻辑OR)的作用不一样
    |
    将两个操作数转换为有符号32位整数,对它们进行位运算并返回结果
    | |
    检查左操作数是否为真,如果为真,则返回左操作数的值,如果不是真,则返回右操作数的值。如果在布尔上下文中计算(例如
    If(a | b)