Speed

I’m trying to programmatically build a heirarchical graph of around 6000 nodes and add them to a diagram which is then layed out using GoLayoutLayeredDigraph. The node and link adding code looks something like this:

    public void tree_parse( geom_node node, GoBoxNode parent )
    {
        foreach ( geom_node each in node.Children )
        {
            GoBoxNode n    = new GoBoxNode();
            n.UserObject    = each;
            each.Tag        = n;
            n.Text            = each.Title;
            goView1.Document.Add( n );

            GoLink l = new Go.GoLink();
            l.FromPort = parent.Port;
            l.ToPort = n.Port;
            goView1.Document.Add( l );

            tree_parse( each, n );
        }
    }

For about 6200 nodes it took about an hour and twenty minutes. Am I missing something obvious, or is this an average amount of time for it to take?

It’s possible to override some methods to make it a lot faster, at the expense of the quality of the layout.
However, the layered-digraph autolayout will never be as fast as a real tree autolayout. We’re working on that right now, but it isn’t available yet.
There are at least two things you could do right now: (1) simplify GoLayoutLayeredDigraph, or (2) use the tree layout algorithm that is provided in the Classier (or FamilyTree) sample application.
I can post the code for (1) if you really want it.
But I would recommend, since you might be working with a tree (given the method name you used), that you just use the LayoutTree method that is in the Classier sample. You’ll need to adapt the code to accept the kinds of classes you are using (instead of ClassNode and GoLink), how to traverse the tree (perhaps ordered), and what coordinates you want to use (if going vertically instead of horizontally).