【发布时间】:2021-11-25 06:10:27
【问题描述】:
我需要在 javascript(角度项目)中对一组对象进行排序。
我的对象相当简单,只是一些字符串和整数的单层:
{
id: 7683,
base: "example",
value: 1000000,
poster: "example",
price: 100,
itemCount: 49
}
这些对象将有 50 000 个,我将它们显示在一个表格中,用户应该能够在其中按任何属性进行排序(我对它们进行分页以在渲染期间节省资源)。
我当前的实现是带有自定义排序功能的基本 javascript 排序算法:
this.myList.sort((a,b) => a.id - b.id)
目前这需要大约 25 秒,这不是我所追求的用户体验。我测试了一个数据表实现,它似乎工作得很快,所以我试图找出为什么我的速度没有那么快。
完成我的排序的最快方法是什么?我需要编写自定义快速排序吗?如果是这样,你介意解释一下使用自定义函数的默认排序会比我自己写的更慢吗?谢谢
编辑:
感谢那些强调不应该花这么长时间的人。我不确定这样的合理时间表。在创建了一些测试用例之后,似乎是 UI 元素的绘制/渲染花费了时间(尽管 chrome 调试器说这都是脚本,也许我对此的理解是不正确的)。感谢您的帮助。
【问题讨论】:
-
尝试将排序作业分散到 Web Worker。我对我的项目进行了相同的精确排序计算,并为此使用了 web worker。
-
更好的问题是,为什么要对 50k 项进行排序?这是什么类型的应用程序?
-
25秒怎么算?
-
25 秒对 50000 个项目进行排序看起来像冒泡排序性能。您确定在数据提取期间分页不起作用以进行排序吗?
-
你确定是那种,而不是别的?
标签: javascript angular sorting datatable large-data