From 89f19b709916ed26d7499761140549a02c36d3f5 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Thu, 2 Apr 2020 15:14:53 -0400 Subject: Performance: remove Members indirection for QPDFObjectHandle --- include/qpdf/QPDFObjectHandle.hh | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) (limited to 'include') diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh index 9bf5f7f7..38f29106 100644 --- a/include/qpdf/QPDFObjectHandle.hh +++ b/include/qpdf/QPDFObjectHandle.hh @@ -251,10 +251,10 @@ class QPDFObjectHandle QPDF_DLL QPDFObjectHandle(); QPDF_DLL - QPDFObjectHandle(QPDFObjectHandle const&); + QPDFObjectHandle(QPDFObjectHandle const&) = default; QPDF_DLL QPDFObjectHandle& - operator=(QPDFObjectHandle const&); + operator=(QPDFObjectHandle const&) = default; QPDF_DLL bool isInitialized() const; @@ -957,7 +957,7 @@ class QPDFObjectHandle static PointerHolder getObject(QPDFObjectHandle& o) { o.dereference(); - return o.m->obj; + return o.obj; } }; friend class ObjAccessor; @@ -1077,29 +1077,16 @@ class QPDFObjectHandle std::string const& description, std::string& all_description); static void warn(QPDF*, QPDFExc const&); - class Members - { - friend class ObjAccessor; - friend class QPDFObjectHandle; - - public: - QPDF_DLL - ~Members(); + bool initialized; - private: - Members(); - Members(QPDF* qpdf, int objid, int generation); - Members(QPDFObject* data); - - bool initialized; - - QPDF* qpdf; - int objid; // 0 for direct object - int generation; - PointerHolder obj; - bool reserved; - }; - PointerHolder m; + // Moving members of QPDFObjectHandle into a smart pointer incurs + // a substantial performance penalty since QPDFObjectHandle + // objects are copied around so frequently. + QPDF* qpdf; + int objid; // 0 for direct object + int generation; + PointerHolder obj; + bool reserved; }; #endif // QPDFOBJECTHANDLE_HH -- cgit v1.2.3-54-g00ecf