2014-06-18 2 views
1

데이터 목록, 최소 1 백만 행 (큰 데이터, 기계 학습)을 표시해야합니다. qooxdoo 테이블의 remotetablemodel이 잘 작동하지만 테이블 대신 디자인 선택 항목으로 목록을 선택하면 즉시 표시 할 필요가 없습니다.Qooxdoo 가상 목록을 어떻게 확장 가능하게 만들 수 있습니까?

다음은 내가 작성한 테스트입니다.

//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); 

나는 원시 데이터를 생성하고이를 목록에 할당하는 데 오래 걸린다는 점을 이해합니다. 그러나 문제는 목록을 할당 한 후에 가상 목록 자체가 거의 응답하지 않습니다.

스크롤이 너무 느리며 아래 화살표로 이동해도 몇 초가 지나면 고정됩니다. Qooxdoo 가상 인프라는 올바르게 이해할 경우 표시되는 항목 만 렌더링한다고 가정합니까? 그러나 위의 테스트 케이스에서는 너무 느립니다. 원격 테이블 모델처럼 작동 할 것으로 예상됩니다.

Chrome 35에서 qooxdoo 최신 4.0.0 및 3.5.1로 테스트되었습니다.

답변

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

+0

감사합니다. 제공 한 목록의 버전을 테스트 할 예정입니다. –

+0

그래서 지금 내가 이해하는 것은 거대한 데이터 세트를 처리 할 수 ​​있기 때문에 데이터 바인딩이 이상적이지 않다는 것입니다. 수동으로 데이터를 입력하는 것이 더 낫습니다. –

+0

예, 거대한 데이터 세트를 처리 할 수 ​​있어야합니다. 가상 목록에는 데이터 바인딩을 사용해야하지만 소스 버전에 성능 버그 만 있다는 것은 슬픈 일입니다. –

관련 문제