Javascript:哪个'time processing'函数更快?



我刚刚创建了一个函数的两个版本,它们可用于处理日期和时间并将其返回到不同的HTML元素。这些元素将显示在手机锁屏中。该函数每秒调用一次,以确保它在时间上跳转到下一分钟。

  • v。1一次工作:每秒处理每一个时间单位(秒、分、日、月等)。
  • v。2分步工作:如果秒的数字在任何时候都是"0"处理分钟。然后,如果分钟为"0"处理小时等。

我希望v2更快,但根据我在这里做的测试:http://jsperf.com/timecalccompare它慢了大约90% !是真的比较慢还是测试不可靠?

我会使用更简单的方法,但在更新视图和执行其余计算之前,还要检查分钟是否实际发生了变化:

也绝对没有理由在每次迭代中声明月份和日期数组,所以:

var months      = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var days        = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var lastMinute = null;
function Update()
{
    var now, minutes, hours, day, date, month, daypart = "AM";
    now         = new Date();
    minutes     = now.getMinutes();
    if(minutes == lastMinute) return;
    hours       = now.getHours();
    day         = days[now.getDay()];
    date        = now.getDate();
    month       = months[now.getMonth()].substring(0, 3);
    if(minutes < 10) minutes = "0" + minutes;
    if(hours > 12) {
        hours -= 12;
        daypart = "PM";
    }
    if(hours == 0) hours = 12;
    $("#clock").text(hours + ":" + minutes + " " + daypart);
    $("#day").text(day);
    $("#date").text(date + " " + month);
    lastMinute = minutes;
}

你的第二个版本只是坏了,没有做任何接近它应该做的事情。如果增加秒数不会使它们为零,则需要停止处理,而不是继续进行更多的测试。

建议:尽量减少DOM访问次数

你的分步脚本不工作!

最新更新