Changeset: fab58412158f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/fab58412158f Modified Files: common/stream/text_stream.c gdk/gdk_logger.c Branch: default Log Message:
optimizing the logger a bit.
diffs (104 lines):
diff --git a/common/stream/text_stream.c b/common/stream/text_stream.c
--- a/common/stream/text_stream.c
+++ b/common/stream/text_stream.c
@@ -66,7 +66,7 @@ get_buffer(inner_state_t *inner_state)
return (pump_buffer) { .start = inner_state->buffer, .count =
BUFFER_SIZE };
}
-static void
+inline static void
put_byte(inner_state_t *ist, char byte)
{
*ist->dst_win.start++ = byte;
@@ -74,7 +74,7 @@ put_byte(inner_state_t *ist, char byte)
ist->dst_win.count--;
}
-static char
+inline static char
take_byte(inner_state_t *ist)
{
ist->src_win.count--;
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -398,40 +398,50 @@ log_read_updates(logger *lg, trans *tr,
else
res = LOG_ERR;
} else {
- for (lng i = 0; i < nr; i += 32) {
- int v;
- switch
(mnstr_readInt(lg->input_log, &v)) {
- case 1:
- continue;
- case 0:
- res = LOG_EOF;
- break;
- default:
+ size_t tlen = lg->bufsize/sizeof(int);
+ size_t cnt = 0, snr = (size_t)nr;
+ snr = (snr+31)/32;
+ assert(tlen);
+ for (; res == LOG_OK && snr > 0;
snr-=cnt) {
+ cnt = snr>tlen?tlen:snr;
+ if
(!mnstr_readIntArray(lg->input_log, lg->buf, cnt))
res = LOG_ERR;
- break;
- }
- break;
}
}
} else {
- for (; res == LOG_OK && nr > 0; nr--) {
- size_t tlen = lg->bufsize;
- void *t = rt(lg->buf, &tlen,
lg->input_log, 1);
+ if (!ATOMvarsized(tpe)) {
+ size_t cnt = 0, snr = (size_t)nr;
+ size_t tlen =
lg->bufsize/ATOMsize(tpe), ntlen = lg->bufsize;
+ assert(tlen);
+ /* read in chunks of max
+ * BUFSIZE/width rows */
+ for (; res == LOG_OK && snr > 0;
snr-=cnt) {
+ cnt = snr>tlen?tlen:snr;
+ void *t = rt(lg->buf, &ntlen,
lg->input_log, cnt);
+ assert(t == lg->buf);
+ if (r && BUNappendmulti(r, t,
cnt, true) != GDK_SUCCEED)
+ res = LOG_ERR;
+ }
+ } else {
+ for (; res == LOG_OK && nr > 0; nr--) {
+ size_t tlen = lg->bufsize;
+ void *t = rt(lg->buf, &tlen,
lg->input_log, 1);
- if (t == NULL) {
- /* see if failure was due to
- * malloc or something less
- * serious (in the current
- * context) */
- if (strstr(GDKerrbuf, "alloc")
== NULL)
- res = LOG_EOF;
- else
- res = LOG_ERR;
- } else {
- lg->buf = t;
- lg->bufsize = tlen;
- if (r && BUNappend(r, t, true)
!= GDK_SUCCEED)
- res = LOG_ERR;
+ if (t == NULL) {
+ /* see if failure was
due to
+ * malloc or something
less
+ * serious (in the
current
+ * context) */
+ if (strstr(GDKerrbuf,
"alloc") == NULL)
+ res = LOG_EOF;
+ else
+ res = LOG_ERR;
+ } else {
+ lg->buf = t;
+ lg->bufsize = tlen;
+ if (r && BUNappend(r,
t, true) != GDK_SUCCEED)
+ res = LOG_ERR;
+ }
}
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
