Changeset: d48024361f64 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d48024361f64
Modified Files:
clients/mapilib/mapi.c
Branch: protocol
Log Message:
performance tweaks for string conversions
diffs (67 lines):
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -3996,8 +3996,29 @@ static char* mapi_convert_varchar(struct
return col->buffer_ptr;
}
+static char* itoa(int i, char b[]){
+ char const digit[] = "0123456789";
+ char* p = b;
+ if(i<0){
+ *p++ = '-';
+ i *= -1;
+ }
+ int shifter = i;
+ do{ //Move to where representation ends
+ ++p;
+ shifter = shifter/10;
+ }while(shifter);
+ *p = '\0';
+ do{ //Move back, inserting digits as u go
+ *--p = digit[i%10];
+ i = i/10;
+ }while(i);
+ return b;
+}
+
static char* mapi_convert_int(struct MapiColumn *col) {
- sprintf(col->write_buf, "%d", *((int*) col->buffer_ptr));
+ //sprintf(col->write_buf, "%d", *((int*) col->buffer_ptr));
+ itoa(*((int*) col->buffer_ptr), col->write_buf);
return (char*) col->write_buf;
}
@@ -4017,7 +4038,8 @@ static char* mapi_convert_tinyint(struct
}
static char* mapi_convert_double(struct MapiColumn *col) {
- sprintf(col->write_buf, "%g", *((double*) col->buffer_ptr));
+ //sprintf(col->write_buf, "%g", *((double*) col->buffer_ptr));
+ gcvt(*((double*) col->buffer_ptr), 2, col->write_buf);
return (char*) col->write_buf;
}
@@ -4101,8 +4123,20 @@ mapi_convert_date(struct MapiColumn *col
}
day -= CUMDAYS[month - 1];
}
-
- sprintf(col->write_buf, "%04d-%02d-%02d", year, month, day);
+ // YYYY-MM-DD
+ col->write_buf[0] = (year/1000) + 48;
+ col->write_buf[1] = ((year/100) % 10) + 48;
+ col->write_buf[2] = ((year/10) % 10) + 48;
+ col->write_buf[3] = (year % 10) + 48;
+ col->write_buf[4] = '-';
+ col->write_buf[5] = (month/10) + 48;
+ col->write_buf[6] = (month % 10) + 48;
+ col->write_buf[7] = '-';
+ col->write_buf[8] = (day/10) + 48;
+ col->write_buf[9] = (day % 10) + 48;
+ col->write_buf[10] = 0;
+
+ //sprintf(col->write_buf, "%04d-%02d-%02d", year, month, day);
return col->write_buf;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list