1
0
Fork 0

preallocate string buffer

This commit is contained in:
Jan Steemann 2015-01-12 23:40:33 +01:00
parent cb03933c1e
commit e5b0c11234
2 changed files with 16 additions and 12 deletions

View File

@ -474,13 +474,15 @@ void Executor::generateCodeString (std::string const& value) {
}
////////////////////////////////////////////////////////////////////////////////
/// @brief generate JavaScript code for a list
/// @brief generate JavaScript code for an array
////////////////////////////////////////////////////////////////////////////////
void Executor::generateCodeList (AstNode const* node) {
void Executor::generateCodeArray (AstNode const* node) {
TRI_ASSERT(node != nullptr);
size_t const n = node->numMembers();
// very conservative minimum bound
_buffer->reserve(2 + n * 3);
_buffer->appendChar('[');
for (size_t i = 0; i < n; ++i) {
@ -494,13 +496,15 @@ void Executor::generateCodeList (AstNode const* node) {
}
////////////////////////////////////////////////////////////////////////////////
/// @brief generate JavaScript code for an array
/// @brief generate JavaScript code for an object
////////////////////////////////////////////////////////////////////////////////
void Executor::generateCodeArray (AstNode const* node) {
void Executor::generateCodeObject (AstNode const* node) {
TRI_ASSERT(node != nullptr);
size_t const n = node->numMembers();
// very conservative minimum bound
_buffer->reserve(2 + n * 6);
_buffer->appendChar('{');
for (size_t i = 0; i < n; ++i) {
@ -840,11 +844,11 @@ void Executor::generateCodeNode (AstNode const* node) {
break;
case NODE_TYPE_ARRAY:
generateCodeList(node);
generateCodeArray(node);
break;
case NODE_TYPE_OBJECT:
generateCodeArray(node);
generateCodeObject(node);
break;
case NODE_TYPE_OPERATOR_UNARY_PLUS:

View File

@ -129,18 +129,18 @@ namespace triagens {
void generateCodeString (std::string const&);
////////////////////////////////////////////////////////////////////////////////
/// @brief generate JavaScript code for a list
////////////////////////////////////////////////////////////////////////////////
void generateCodeList (AstNode const*);
////////////////////////////////////////////////////////////////////////////////
/// @brief generate JavaScript code for an array
////////////////////////////////////////////////////////////////////////////////
void generateCodeArray (AstNode const*);
////////////////////////////////////////////////////////////////////////////////
/// @brief generate JavaScript code for an object
////////////////////////////////////////////////////////////////////////////////
void generateCodeObject (AstNode const*);
////////////////////////////////////////////////////////////////////////////////
/// @brief generate JavaScript code for a unary operator
////////////////////////////////////////////////////////////////////////////////