summaryrefslogtreecommitdiff
path: root/apt-pkg/contrib/macros.h
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2010-03-30 12:38:38 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2010-03-30 12:38:38 +0200
commit6dc60370a750334cb701386cfa4ef9719db9078a (patch)
treeda472df5380711af32eefa61c6220ed2520ade6d /apt-pkg/contrib/macros.h
parentb569b4650c647c3aef5341c40d208a37211b57aa (diff)
replace every call to toupper with one to our own tolower_ascii
This sounds like a premature optimization and since Mr. Knuth we all know that they are the root of all evil - but, and here it starts to be interesting: As the tolower_ascii method is by far the most called method we have (~60 Mio. times) and as we compare only strings containing ascii characters (package names, configuration options) using our own method reduces execution time of APT by 4% plus it avoids that the locale settings can influence us.
Diffstat (limited to 'apt-pkg/contrib/macros.h')
-rw-r--r--apt-pkg/contrib/macros.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/apt-pkg/contrib/macros.h b/apt-pkg/contrib/macros.h
index c39caf198..62e7b65db 100644
--- a/apt-pkg/contrib/macros.h
+++ b/apt-pkg/contrib/macros.h
@@ -58,6 +58,7 @@
#if __GNUC__ >= 3
#define __must_check __attribute__ ((warn_unused_result))
#define __deprecated __attribute__ ((deprecated))
+ #define __attrib_const __attribute__ ((__const__))
/* likely() and unlikely() can be used to mark boolean expressions
as (not) likely true which will help the compiler to optimise */
#define likely(x) __builtin_expect (!!(x), 1)
@@ -65,6 +66,7 @@
#else
#define __must_check /* no warn_unused_result */
#define __deprecated /* no deprecated */
+ #define __attrib_const /* no const attribute */
#define likely(x) (x)
#define unlikely(x) (x)
#endif
@@ -72,17 +74,17 @@
// cold functions are unlikely() to be called
#if (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) || __GNUC__ > 4
#define __cold __attribute__ ((__cold__))
+ #define __hot __attribute__ ((__hot__))
#else
#define __cold /* no cold marker */
+ #define __hot /* no hot marker */
#endif
#ifdef __GNUG__
// Methods have a hidden this parameter that is visible to this attribute
- #define __like_printf_1 __attribute__ ((format (printf, 2, 3)))
- #define __like_printf_2 __attribute__ ((format (printf, 3, 4)))
+ #define __like_printf(n) __attribute__((format(printf, n, n + 1)))
#else
- #define __like_printf_1 /* no like-printf */
- #define __like_printf_2 /* no like-printf */
+ #define __like_printf(n) /* no like-printf */
#endif
#endif