diff options
author | Eike Rathke <erack@redhat.com> | 2017-06-06 20:53:00 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2017-06-07 00:55:00 +0200 |
commit | 3f94381f72782e0c5b16df12de6d52de96e8a0d5 (patch) | |
tree | 2604568ad0154b52c414d65264177c9da6f860c7 /include | |
parent | 2555243dce5920630b487275617a2551ab7e299b (diff) |
Perf-sc: tdf#100709 SfxPoolItem::IsVoidItem() instead of dynamic_cast
SfxItemSet::GetItemState()
before, Ir: 4 048 231 416
after, Ir: 2 577 117 709
Change-Id: I26d8b91ad5d851011a670b38b7b98e5582c319cf
(cherry picked from commit f300a627b9a88eb8814cc35844ed7c6aa7f19379)
Reviewed-on: https://gerrit.libreoffice.org/38462
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/svl/poolitem.hxx | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/svl/poolitem.hxx b/include/svl/poolitem.hxx index 78ed4120841f..321b10c6dd43 100644 --- a/include/svl/poolitem.hxx +++ b/include/svl/poolitem.hxx @@ -176,6 +176,13 @@ public: SfxItemKind GetKind() const { return m_nKind; } virtual void dumpAsXml(struct _xmlTextWriter* pWriter) const; + /** Only SfxVoidItem shall and must return true for this. + + This avoids costly calls to dynamic_cast<const SfxVoidItem*>() + specifically in SfxItemSet::GetItemState() + */ + virtual bool IsVoidItem() const; + private: SfxPoolItem& operator=( const SfxPoolItem& ) = delete; }; @@ -252,6 +259,9 @@ public: // create a copy of itself virtual SfxPoolItem* Clone( SfxItemPool *pPool = nullptr ) const override; + + /** Always returns true as this is an SfxVoidItem. */ + virtual bool IsVoidItem() const override; }; class SVL_DLLPUBLIC SfxSetItem: public SfxPoolItem |