summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-05-03 23:14:26 +0000
committerDavid Robillard <d@drobilla.net>2008-05-03 23:14:26 +0000
commita2706dd069fde845e8a6f2d46112db7c1727a0db (patch)
tree750c92379e6acc00e13836d0bb0223c600c5878e /src
parent9dd89e3a4b9d9f0bfb408c827358f8e97c12373b (diff)
downloadlilv-a2706dd069fde845e8a6f2d46112db7c1727a0db.tar.gz
lilv-a2706dd069fde845e8a6f2d46112db7c1727a0db.tar.bz2
lilv-a2706dd069fde845e8a6f2d46112db7c1727a0db.zip
Use new redland "trees" store, if available (100 fold performance increases in some cases).
git-svn-id: http://svn.drobilla.net/lad/slv2@1195 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/plugin.c4
-rw-r--r--src/world.c32
2 files changed, 25 insertions, 11 deletions
diff --git a/src/plugin.c b/src/plugin.c
index a945e8a..6e3d94e 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -111,7 +111,9 @@ slv2_plugin_load(SLV2Plugin p)
assert(!p->rdf);
//p->storage = librdf_new_storage(p->world->world, "hashes", NULL,
// "hash-type='memory'");
- p->storage = librdf_new_storage(p->world->world, "memory", NULL, NULL);
+ p->storage = librdf_new_storage(p->world->world, "trees", NULL, NULL);
+ if (!p->storage)
+ p->storage = librdf_new_storage(p->world->world, "memory", NULL, NULL);
p->rdf = librdf_new_model(p->world->world, p->storage, NULL);
}
diff --git a/src/world.c b/src/world.c
index bebf540..01201fb 100644
--- a/src/world.c
+++ b/src/world.c
@@ -43,10 +43,15 @@ slv2_world_new()
librdf_world_open(world->world);
- // Testing shows hashes to be faster here
- //world->storage = librdf_new_storage(world->world, "memory", NULL, NULL);
- world->storage = librdf_new_storage(world->world, "hashes", NULL,
- "hash-type='memory'");
+ world->storage = librdf_new_storage(world->world, "trees", NULL, NULL);
+ if (!world->storage) {
+ fprintf(stderr, "Warning: Unable to create \"trees\" RDF storage.\n");
+ fprintf(stderr, "Performance can be improved by upgrading librdf.\n");
+ // Testing shows "hashes" to be faster than "memory" (list) here
+ world->storage = librdf_new_storage(world->world, "hashes", NULL,
+ "hash-type='memory'");
+ }
+
if (!world->storage)
goto fail;
@@ -99,10 +104,15 @@ slv2_world_new_using_rdf_world(librdf_world* rdf_world)
world->local_world = false;
- // Testing shows hashes to be faster here
- //world->storage = librdf_new_storage(world->world, "memory", NULL, NULL);
- world->storage = librdf_new_storage(world->world, "hashes", NULL,
- "hash-type='memory'");
+ world->storage = librdf_new_storage(world->world, "trees", NULL, NULL);
+ if (!world->storage) {
+ fprintf(stderr, "Warning: Unable to create \"trees\" RDF storage.\n");
+ fprintf(stderr, "Performance can be improved by upgrading librdf.\n");
+ // Testing shows "hashes" to be faster than "memory" (list) here
+ world->storage = librdf_new_storage(world->world, "hashes", NULL,
+ "hash-type='memory'");
+ }
+
if (!world->storage)
goto fail;
@@ -211,8 +221,10 @@ slv2_world_load_bundle(SLV2World world, SLV2Value bundle_uri)
bundle_uri->val.uri_val, (const unsigned char*)"manifest.ttl");
/* Parse the manifest into a temporary model */
- librdf_storage* manifest_storage = librdf_new_storage(world->world,
- "memory", NULL, NULL);
+ librdf_storage* manifest_storage = librdf_new_storage(world->world, "trees", NULL, NULL);
+ if (manifest_storage == NULL)
+ manifest_storage = librdf_new_storage(world->world, "memory", NULL, NULL);
+
librdf_model* manifest_model = librdf_new_model(world->world,
manifest_storage, NULL);
librdf_parser_parse_into_model(world->parser, manifest_uri, NULL,