Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / долгий Check на дереве / 22 сообщений из 22, страница 1 из 1
04.07.2017, 14:53
    #39482435
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
В общем есть дерево, 20000 нод, в каждой ноде по 10 нод. Если чекаешь на руте, ждешь 5 минут....

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
package sample;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CheckBoxTreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.control.cell.CheckBoxTreeCell;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Tree View Sample");
        TreeView<String> tree = new TreeView<>(new CheckBoxTreeItem<>("root"));
        fillTree(tree);
        StackPane root = new StackPane();
        root.getChildren().add(tree);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }

    private void fillTree(TreeView<String> treeView) {
        treeView.setCellFactory(p -> new CheckBoxTreeCell<>());
        for (int i = 0; i < 20000; i++) {
            CheckBoxTreeItem checkBoxTreeItem = new CheckBoxTreeItem<>(i);
            treeView.getRoot().getChildren().add(checkBoxTreeItem);
            for (int j = 0; j < 10; j++) {
                checkBoxTreeItem.getChildren().add(new CheckBoxTreeItem<>(j));
            }
        }
    }


    public static void main(String[] args) {
        launch(args);
    }
}



есть идеи как работать с большими деревьями.... с чеками...?
...
Рейтинг: 0 / 0
04.07.2017, 15:02
    #39482445
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkесть идеи как работать с большими деревьями.... с чеками...?
если тормозит не твой код, а именно отрисовка, то делать виртуальное дерево. Обычно такие есть на всех платформах.
Т.е. рисовать только то что видно (при разворачивании).
...
Рейтинг: 0 / 0
04.07.2017, 15:05
    #39482450
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
Код: java
1.
2.
3.
        CheckBoxTreeItem<String> item = new CheckBoxTreeItem<>("root");
        item.setIndependent(true);
        TreeView<String> tree = new TreeView<>(item);
...
Рейтинг: 0 / 0
04.07.2017, 15:22
    #39482468
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
Blazkowicz, ага, спасибо. Я вот тоже потихоньку склоняюсь к этому решению. Придется вручную разруливать все чеки, анчеки, индепенденты...
...
Рейтинг: 0 / 0
04.07.2017, 15:27
    #39482476
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkПридется вручную разруливать все чеки, анчеки, индепенденты...
В смысле? Вроде, отображается всё нормально включая indeterminate. Значит и возвращать должно тоже. Разве нет?
...
Рейтинг: 0 / 0
04.07.2017, 15:28
    #39482478
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkЯ вот тоже потихоньку склоняюсь к этому решению.
А ещё стоит задаться вопросом нахрена юзеру 20К нод в дереве.
...
Рейтинг: 0 / 0
04.07.2017, 15:35
    #39482490
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
Blazkowicz В смысле? Вроде, отображается всё нормально включая indeterminate. Значит и возвращать должно тоже. Разве нет?

там ж получается, чекаешь рут, и после этого чекнется только 1 уровень. Так как на руте independent false останется, а нижние (0-10) останутся нечекнутые.
...
Рейтинг: 0 / 0
04.07.2017, 15:50
    #39482513
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNShark,
тут была тема про дерево.
У чела при пустом коде на чеки, дерево при чеке на руте рисоволось быстро - 0,2 сек.
Но там вроде несколько тыщ было
...
Рейтинг: 0 / 0
04.07.2017, 15:51
    #39482514
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
BlazkowiczА ещё стоит задаться вопросом нахрена юзеру 20К нод в дереве.
Хороший вопрос. Тестировщики балуются. Делают нагрузочное тестирование...
...
Рейтинг: 0 / 0
04.07.2017, 15:53
    #39482519
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkДелают нагрузочное тестирование..
)) Молодцы. Скажи им что виртуальное - в 3 раза дороже)
...
Рейтинг: 0 / 0
04.07.2017, 15:54
    #39482521
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkтам ж получается, чекаешь рут, и после этого чекнется только 1 уровень. Так как на руте independent false останется, а нижние (0-10) останутся нечекнутые.
Ага. Я понял уже. Можно реализовать свой TreeItem с нужным поведением. Но, вообще, вроде, ожидаемо, если нужно в обе стороны событие пропихнуть, придется всё дерево обходить и каждую ноду валидировать на состояние.
...
Рейтинг: 0 / 0
04.07.2017, 15:54
    #39482525
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkТестировщики балуются. Делают нагрузочное тестирование...
Нагрузочное тестирование на GUI? :D Полезными делами не пробовали заниматься?
...
Рейтинг: 0 / 0
04.07.2017, 15:57
    #39482527
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNShark,
предложи им пагинацию для длинного дерева)))
...
Рейтинг: 0 / 0
04.07.2017, 16:01
    #39482537
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
Petro123, перерисовка быстро идет, там проверки бегают по дереву вверх вниз чеки проставляют updateState(). И событие кидает. Потом опять его ловит, проставляет чеки и т.д. Поэтому и долго (. Хотя если после каждого чека перерисовка идет... будет долговато
...
Рейтинг: 0 / 0
04.07.2017, 16:04
    #39482542
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkPetro123, перерисовка быстро идет, там проверки бегают по дереву вверх вниз чеки проставляют updateState(). И событие кидает. Потом опять его ловит, проставляет чеки и т.д. Поэтому и долго (. Хотя если после каждого чека перерисовка идет... будет долговато
У НЕГО РАБОТАЛО если нет своего кода в событии. Например обращения к базе.
...
Рейтинг: 0 / 0
04.07.2017, 16:08
    #39482554
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
Petro123, я ж весь код написал в скроле, в 1 посте... он пустой... там ничего нет... и выполняется 5 минут.
...
Рейтинг: 0 / 0
04.07.2017, 16:10
    #39482561
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkPetro123, я ж весь код написал в скроле, в 1 посте... он пустой... там ничего нет... и выполняется 5 минут.
ну дак найди тему чела у кого РАБОТАЕТ. Так?
...
Рейтинг: 0 / 0
04.07.2017, 16:55
    #39482615
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkТестировщики балуются. Делают нагрузочное тестирование...
Поставь разумное ограничение на количество нод, чтобы больше нельзя было загрузить в дерево. Или это реалистичное требование в 20К нод?
...
Рейтинг: 0 / 0
04.07.2017, 17:21
    #39482638
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
Blazkowicz,
раз ты просил быть помягче)), то поискал ссылку сам))
авторзависание ушло,
1000 нод - зависания нету
20546225
...
Рейтинг: 0 / 0
04.07.2017, 17:35
    #39482643
DNShark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
Petro123, ну это 1000 нод. А у меня 20000 * 10 = 200000. На 1000 нод всё ок. По сути это +- дефолтный объект.
...
Рейтинг: 0 / 0
04.07.2017, 17:49
    #39482649
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkPetro123, ну это 1000 нод. А у меня 20000 * 10 = 200000. На 1000 нод всё ок. По сути это +- дефолтный объект.
да. Я выше и сказал, что в том примере были тыщи на тестах.
Значит либо виртуальное делать (выкл событий ГУИ при построении-конструктора). Либо ограничивать по ТЗ.
Максимум в ТЗ должен быть описан.
...
Рейтинг: 0 / 0
04.07.2017, 17:50
    #39482651
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
долгий Check на дереве
DNSharkА у меня 20000 * 10 = 200000
при виртуальном, 200 килоштук на экране нету.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / долгий Check на дереве / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]