On Thu, Nov 5, 2015 at 9:48 AM, Szabolcs Horvát <[email protected]> wrote: > On 5 November 2015 at 10:17, Gábor Csárdi <[email protected]> wrote: >> >> so that you don't need to copy between C and R. >> > > Oh, so does the R interface avoid copying data structures that are > also exposed to R? (I don't know anything about R internals or how to > extend R with C.) > > In which situations does it manage to avoid copies? I am interested > in this because a major bottleneck of the Mathematica interface is all > the copying it needs to do and currently I'm trying to speed things > up.
We copy once from C to R, when the object is created. This could be avoided by using our own memory allocator, but we don't do that currently. > When igraph functions return an igraph_vector_t, does it need to be > copied to get exposed as an R numerical vector? Yes. > If not, did you need > to make changes to igraph's memory allocation to make it usable in > conjunction with R? > > I know that copies can be avoided when sending data *to* igraph, e.g. > often we can use igraph_vector_view() Yes, that's what we use to create a view on the graph. > Does igraph offer anything similar to a "vector view" for an igraph_t? > I.e. if I already have an igraph_vector_t for the "from" vertices and > "to" vertices, can I safely re-use them inside of a graph? I never > really looked at the internal structure and I don't know what oi, ii, > os, is do ... If igraph wasn't designed for this, it's probably not a > good idea for me to push it though. It is done manually, by creating a bunch of vector view. See here: https://github.com/igraph/rigraph/blob/dev/tools/stimulus/rinterface.c.in#L3073 This is fine as long as the function(s) you call with it take a 'const' igraph_t. Otherwise you need to copy. Gabor > _______________________________________________ > igraph-help mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/igraph-help _______________________________________________ igraph-help mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/igraph-help
