Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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秒表性能_Javascript_Jquery_Performance_Stopwatch - Fatal编程技术网

Javascript秒表性能

Javascript秒表性能,javascript,jquery,performance,stopwatch,Javascript,Jquery,Performance,Stopwatch,我试图在一个表中显示多个运行时间。 该表有3列(nr、name、time)。时间以“hh:mm:ss.f”格式显示,这意味着我每100ms更新一次时间 function updateTimes() { setTimeout(updateTimes, 100); // requestAnimationFrame(updateTimes); $("#livedata tbody tr").each(function (index, value) { var li

我试图在一个表中显示多个运行时间。 该表有3列(nr、name、time)。时间以“hh:mm:ss.f”格式显示,这意味着我每100ms更新一次时间

function updateTimes() {
    setTimeout(updateTimes, 100);
   // requestAnimationFrame(updateTimes);
    $("#livedata tbody tr").each(function (index, value) {
        var live = $(value).data("base");
        $("#" + live.Entry.Id + "_time").text(formatTimeF(moment().subtract(live.Data)));
    });
}

 //Create Table Row
function UpdateLive(live) {
    var e = $("#" + live.Entry.Id);

    if (e.length == 0) {
        e = $("<tr id='" + live.Entry.Id + "' class='live'/>");
    $("<td id='" + live.Entry.Id + "_name" + "'></td>").appendTo(e);
        $("<td id='" + live.Entry.Id + "_nr" + "'></td>").appendTo(e);
        $("<td id='" + live.Entry.Id + "_time" + "'></td>").appendTo(e);
        e.appendTo($("#livedata"));
    }
    e.data("base", live);
}
函数更新时间(){
setTimeout(updateTimes,100);
//requestAnimationFrame(更新时间);
$(“#livedata tbody tr”)。每个(函数(索引、值){
var live=$(值)。数据(“基础”);
$(“#”+live.Entry.Id+“_-time”).text(formatTimeF(矩().subtract(live.Data));
});
}
//创建表行
函数UpdateLive(实时){
var e=$(“#”+live.Entry.Id);
如果(e.length==0){
e=$(“”);
$(“”)。附录(e);
$(“”)。附录(e);
$(“”)。附录(e);
e、 附件($(“#livedata”);
}
e、 数据(“数据库”,实时);
}
代码正常,时间在“普通”PC上按预期显示,我的问题是移动设备(手机)。对于大多数设备来说,更新间隔(100ms)似乎太快,因此时间开始“跳跃”。如果我只更新现有表元素的时间,“跳跃”并没有那么困难,但是如果我添加表行,在添加行之前,它会变得最糟糕。 我使用JQuery来操作表

有人知道我如何提高我的表现吗

问候 曼努

一些想法:

  • 使用对元素的直接引用,而不是一直通过
    $
    选择器访问元素,肯定会有所帮助。例如,使用
    $(live.childNodes[2])
    而不是
    $(“#”+live.Entry.Id+“_time”)
    ,或者存储对单个单元格的引用。然后可以删除单元格的所有
    id
    属性
  • 假设瓶颈是元素创建,您可以提前创建隐藏表行,并在使用它们之后显示它们,在使用之后再次隐藏它们。不过,这需要对这些函数进行重大重写
  • 我不确定
    $(“”)
    增加了多少开销。也许
    document.createElement('td')
    的速度要快得多
  • (这实际上应该出现在每个与性能相关的更改的开始)评测代码,例如使用Chrome开发工具中的Profile选项卡。它将显示在哪里花费了多少时间,以便您知道最昂贵的函数调用是什么。我会假设,即使它在桌面上更快,移动设备上最慢的东西在桌面上仍然是最慢的