Author: kpvdr
Date: Tue Dec 19 12:54:22 2006
New Revision: 488808
URL: http://svn.apache.org/viewvc?view=rev&rev=488808
Log:
[For Andrew Stitcher] inlined qpid::sys::check() in APRBase.h; This is called a
lot - for every call to an APR call, inlining this seems to give about 8% speed
in my tests (even though originally check() only seemed to use 1-2% of the
time). I think this must be a 2nd order instruction caching effect.
Modified:
incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.cpp
incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.h
Modified: incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.cpp
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.cpp?view=diff&rev=488808&r1=488807&r2=488808
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.cpp Tue Dec 19
12:54:22 2006
@@ -82,16 +82,6 @@
getInstance()->_decrement();
}
-void qpid::sys::check(apr_status_t status, const char* file, const int line){
- if (status != APR_SUCCESS){
- const int size = 50;
- char tmp[size];
- std::string msg(apr_strerror(status, tmp, size));
- throw QpidError(APR_ERROR + ((int) status), msg,
- qpid::SrcLine(file, line));
- }
-}
-
std::string qpid::sys::get_desc(apr_status_t status){
const int size = 50;
char tmp[size];
Modified: incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.h
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.h?view=diff&rev=488808&r1=488807&r2=488808
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.h (original)
+++ incubator/qpid/trunk/qpid/cpp/lib/common/sys/apr/APRBase.h Tue Dec 19
12:54:22 2006
@@ -24,6 +24,7 @@
#include <string>
#include <apr_thread_mutex.h>
#include <apr_errno.h>
+#include <QpidError.h>
namespace qpid {
namespace sys {
@@ -58,6 +59,17 @@
#define CHECK_APR_SUCCESS(A) qpid::sys::check(A, __FILE__, __LINE__);
}
+}
+
+// Inlined as it is called *a lot*
+void inline qpid::sys::check(apr_status_t status, const char* file, const int
line){
+ if (status != APR_SUCCESS){
+ const int size = 50;
+ char tmp[size];
+ std::string msg(apr_strerror(status, tmp, size));
+ throw qpid::QpidError(APR_ERROR + ((int) status), msg,
+ qpid::SrcLine(file, line));
+ }
}