diff options
author | David Robillard <d@drobilla.net> | 2010-02-02 20:37:50 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2010-02-02 20:37:50 +0000 |
commit | a645d2b8be4d7d31f6eef1649156b166a01e0c31 (patch) | |
tree | 3d83c08e9a5460cc6582482bcfc673dff956a1e7 /src/client/ObjectModel.hpp | |
parent | 653679e967f11a0e008521885fcaf6994d2961fa (diff) | |
download | ingen-a645d2b8be4d7d31f6eef1649156b166a01e0c31.tar.gz ingen-a645d2b8be4d7d31f6eef1649156b166a01e0c31.tar.bz2 ingen-a645d2b8be4d7d31f6eef1649156b166a01e0c31.zip |
Use Glib string interning (quarks) to make Path/URI operator== very fast.
This avoids a ton of string comparison overhead in Ingen when setting various
properties (e.g. "ingen:value" was compared several times every time a port
value was changed, now this is just a single pointer comparison and the full
round trip of a value change does no string comparison at all, but is still
property based and RDFey).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2408 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/client/ObjectModel.hpp')
-rw-r--r-- | src/client/ObjectModel.hpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/client/ObjectModel.hpp b/src/client/ObjectModel.hpp index 7ce19e9c..2c1fd23e 100644 --- a/src/client/ObjectModel.hpp +++ b/src/client/ObjectModel.hpp @@ -61,9 +61,9 @@ public: Resource& meta() { return _meta; } const Resource& meta() const { return _meta; } - const Raul::URI meta_uri() const { return _meta.uri(); } - const Raul::Path path() const { return _path; } - const Raul::Symbol symbol() const { return _path.name(); } + const Raul::URI& meta_uri() const { return _meta.uri(); } + const Raul::Path& path() const { return _path; } + const Raul::Symbol& symbol() const { return _symbol; } SharedPtr<ObjectModel> parent() const { return _parent; } bool polyphonic() const; @@ -89,8 +89,12 @@ protected: virtual void set(SharedPtr<ObjectModel> model); ResourceImpl _meta; - Raul::Path _path; + SharedPtr<ObjectModel> _parent; + +private: + Raul::Path _path; + Raul::Symbol _symbol; }; |