powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / долгий Check на дереве
22 сообщений из 22, страница 1 из 1
долгий Check на дереве
    #39482435
DNShark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем есть дерево, 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
долгий Check на дереве
    #39482445
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNSharkесть идеи как работать с большими деревьями.... с чеками...?
если тормозит не твой код, а именно отрисовка, то делать виртуальное дерево. Обычно такие есть на всех платформах.
Т.е. рисовать только то что видно (при разворачивании).
...
Рейтинг: 0 / 0
долгий Check на дереве
    #39482450
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
        CheckBoxTreeItem<String> item = new CheckBoxTreeItem<>("root");
        item.setIndependent(true);
        TreeView<String> tree = new TreeView<>(item);
...
Рейтинг: 0 / 0
долгий Check на дереве
    #39482468
DNShark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, ага, спасибо. Я вот тоже потихоньку склоняюсь к этому решению. Придется вручную разруливать все чеки, анчеки, индепенденты...
...
Рейтинг: 0 / 0
долгий Check на дереве
    #39482476
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNSharkПридется вручную разруливать все чеки, анчеки, индепенденты...
В смысле? Вроде, отображается всё нормально включая indeterminate. Значит и возвращать должно тоже. Разве нет?
...
Рейтинг: 0 / 0
долгий Check на дереве
    #39482478
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNSharkЯ вот тоже потихоньку склоняюсь к этому решению.
А ещё стоит задаться вопросом нахрена юзеру 20К нод в дереве.
...
Рейтинг: 0 / 0
долгий Check на дереве
    #39482490
DNShark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz В смысле? Вроде, отображается всё нормально включая indeterminate. Значит и возвращать должно тоже. Разве нет?

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


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