Java GraphStream渲染节点和边速度较慢

Java GraphStream渲染节点和边速度较慢,java,graph,rendering,graphstream,Java,Graph,Rendering,Graphstream,我正在制作显示数据库数据的GraphStream。 但它创建节点和边的速度非常慢。我使用的是非常基本的例子 这是我的密码: public class GraphExplore { static Connection conn2; static String result, result2; static JFrame frame; static JPanel panel; static int totalRows, i; public stati

我正在制作显示数据库数据的GraphStream。 但它创建节点和边的速度非常慢。我使用的是非常基本的例子

这是我的密码:

public class GraphExplore {
    static Connection conn2;
    static String result, result2;
    static JFrame frame;
    static JPanel panel;
    static int totalRows, i;

    public static void main(String args[]) throws SQLException {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    showData();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        });
    }

    private static void showData() throws SQLException {

        frame = new JFrame("GRAPH TESTING");

        Graph graph = new SingleGraph("tutorial 1");
        graph.setAutoCreate(true);
        graph.setStrict(false);
        graph.display();

        try {
            Class.forName("org.h2.Driver");
            conn2 = DriverManager.getConnection("jdbc:h2:file:G:/hs_data/h2_db/test", "sa", "sa");

        } catch (Exception e) {
            e.printStackTrace();
        }
        Statement stmt2 = conn2.createStatement();
        ResultSet rs = stmt2.executeQuery("SELECT count(*) FROM cdr");
        while (rs.next()) {
            totalRows = rs.getInt(1);
        }
        ResultSet rs2 = stmt2.executeQuery("SELECT ANUMBER,BNUMBER FROM CDR LIMIT 20");
        while (rs2.next()) {
            result = rs2.getString("ANUMBER");
            result2 = rs2.getString("BNUMBER");
            graph.addNode(result);
            graph.addNode(result2);
            for (i = 0; i < totalRows; i++)
                graph.addEdge("string" + i, result, result2);
        }

        for (Node node : graph) {
            node.addAttribute("ui.label", node.getId());
        }
        // graph.addAttribute("ui.stylesheet", "graph { fill-color: red; }");text-mode:
        // hidden;
        graph.addAttribute("ui.stylesheet", "node {size: 12px;fill-color: #ff0000;z-index: 0;}");
        graph.addAttribute("ui.stylesheet", "edge { shape:line ; fill-color: #222;}");
        conn2.close();
    }

}

现在,我只使用了20行,需要3-4秒。但是我需要展示更多的记录,一次可能超过100万。有人能告诉我如何提高渲染速度吗?

这里只是一个猜测。您是否尝试过具体计时JDBC从查询返回结果所花费的时间?我从这里开始。如果您发现查询很快就会返回,那么这不是数据库的问题。如果是,您可以考虑使用索引来更快地返回结果。 如果查询不是问题所在,您可以查看图形功能。我的猜测会让我相信渲染很慢,因为图形被设置为显示,然后节点和边被添加到其中,所以它会实时渲染。可以在开始渲染图形之前预加载节点和边,从而减少绘制调用的数量