如何使Qooxdoo虚拟列表可扩展?

时间:2014-06-18 20:16:59

标签: javascript html5 performance scalability qooxdoo

我需要显示数据列表,至少有100万行(大数据,机器学习)。 我不需要立即显示,qooxdoo表的remotetablemodel工作正常,而不是表我选择列表作为设计选择。

以下是我做过的测试。

//create the model data, 1mil items
var rawData = [];
for (var i = 0; i < 1000000; i++) {
 rawData[i] = "Item No " + i;
}
var model = new qx.data.Array(rawData);

//create the list
var list = new qx.ui.list.List(model);
this.getRoot().add(list);

我理解生成rawdata并将其分配到列表需要很长时间。 但问题是在分配列表后,虚拟列表本身几乎没有响应。

滚动非常慢,向下箭头导航也会冻结几秒钟。 如果我理解正确,Qooxdoo虚拟基础架构假设只渲染可见项目?但在上面的测试案例中,它是如此缓慢。 我希望像远程表模型一样工作。

在Chrome 35 stable上使用qooxdoo最新4.0.0和3.5.1进行测试。

1 个答案:

答案 0 :(得分:1)

我只能使用源版本而不是构建版本重现您的问题。我找到了性能如此缓慢的原因。 SingleValueBinding在内部方法中进行了运行时检查,这对渲染有很大的性能影响。

我为此打开了一个错误报告: http://bugzilla.qooxdoo.org/show_bug.cgi?id=8439

但令人遗憾的是,这个问题只发生在你的开发者版本中。因此,您的客户不受影响。

您可以根据需要禁用检查。只需删除检查块: https://github.com/qooxdoo/qooxdoo/blob/master/framework/source/class/qx/data/SingleValueBinding.js#L915

您还可以将模型数据加载到零件中以改进模型创建。当用户滚动到列表末尾时,您可以加载下一部分。您可以使用您已经看过的示例: Infinite scroll in qooxdoo with virtual list