aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/sort/bwstring.h
diff options
context:
space:
mode:
authorCyril Zhang <cyril@freebsdfoundation.org>2021-05-13 12:55:06 +0000
committerMark Johnston <markj@FreeBSD.org>2021-05-13 13:33:19 +0000
commit71ec05a21257e159f40d54e26ad0011bb19b5134 (patch)
tree620a133a4424807f2874ca651d4c5714fcd9e8eb /usr.bin/sort/bwstring.h
parentfa43162c63790806d0effba5ac98a1a3c6b835e1 (diff)
sort: Cache value of MB_CUR_MAX
Every usage of MB_CUR_MAX results in a call to __mb_cur_max. This is inefficient and redundant. Caching the value of MB_CUR_MAX in a global variable removes these calls and speeds up the runtime of sort. For numeric sorting, runtime is almost halved in some tests. PR: 255551 PR: 255840 Reviewed by: markj MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30170
Diffstat (limited to 'usr.bin/sort/bwstring.h')
-rw-r--r--usr.bin/sort/bwstring.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/usr.bin/sort/bwstring.h b/usr.bin/sort/bwstring.h
index 9d62eaf37f62..b63bb97ab93f 100644
--- a/usr.bin/sort/bwstring.h
+++ b/usr.bin/sort/bwstring.h
@@ -38,6 +38,7 @@
#include <sysexits.h>
#include <wchar.h>
+#include "sort.h"
#include "mem.h"
extern bool byte_sort;
@@ -109,7 +110,7 @@ static inline bwstring_iterator
bws_end(struct bwstring *bws)
{
- return ((MB_CUR_MAX == 1) ?
+ return ((mb_cur_max == 1) ?
(bwstring_iterator) (bws->data.cstr + bws->len) :
(bwstring_iterator) (bws->data.wstr + bws->len));
}
@@ -118,7 +119,7 @@ static inline bwstring_iterator
bws_iterator_inc(bwstring_iterator iter, size_t pos)
{
- if (MB_CUR_MAX == 1)
+ if (mb_cur_max == 1)
return ((unsigned char *) iter) + pos;
else
return ((wchar_t*) iter) + pos;
@@ -128,7 +129,7 @@ static inline wchar_t
bws_get_iter_value(bwstring_iterator iter)
{
- if (MB_CUR_MAX == 1)
+ if (mb_cur_max == 1)
return *((unsigned char *) iter);
else
return *((wchar_t*) iter);
@@ -137,7 +138,7 @@ bws_get_iter_value(bwstring_iterator iter)
int
bws_iterator_cmp(bwstring_iterator iter1, bwstring_iterator iter2, size_t len);
-#define BWS_GET(bws, pos) ((MB_CUR_MAX == 1) ? ((bws)->data.cstr[(pos)]) : (bws)->data.wstr[(pos)])
+#define BWS_GET(bws, pos) ((mb_cur_max == 1) ? ((bws)->data.cstr[(pos)]) : (bws)->data.wstr[(pos)])
void initialise_months(void);