mirror of https://gitee.com/bigwinds/arangodb
preallocate string buffer
This commit is contained in:
parent
cb03933c1e
commit
e5b0c11234
|
@ -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);
|
TRI_ASSERT(node != nullptr);
|
||||||
|
|
||||||
size_t const n = node->numMembers();
|
size_t const n = node->numMembers();
|
||||||
|
// very conservative minimum bound
|
||||||
|
_buffer->reserve(2 + n * 3);
|
||||||
|
|
||||||
_buffer->appendChar('[');
|
_buffer->appendChar('[');
|
||||||
for (size_t i = 0; i < n; ++i) {
|
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);
|
TRI_ASSERT(node != nullptr);
|
||||||
|
|
||||||
size_t const n = node->numMembers();
|
size_t const n = node->numMembers();
|
||||||
|
// very conservative minimum bound
|
||||||
|
_buffer->reserve(2 + n * 6);
|
||||||
|
|
||||||
_buffer->appendChar('{');
|
_buffer->appendChar('{');
|
||||||
for (size_t i = 0; i < n; ++i) {
|
for (size_t i = 0; i < n; ++i) {
|
||||||
|
@ -840,11 +844,11 @@ void Executor::generateCodeNode (AstNode const* node) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NODE_TYPE_ARRAY:
|
case NODE_TYPE_ARRAY:
|
||||||
generateCodeList(node);
|
generateCodeArray(node);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NODE_TYPE_OBJECT:
|
case NODE_TYPE_OBJECT:
|
||||||
generateCodeArray(node);
|
generateCodeObject(node);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NODE_TYPE_OPERATOR_UNARY_PLUS:
|
case NODE_TYPE_OPERATOR_UNARY_PLUS:
|
||||||
|
|
|
@ -129,18 +129,18 @@ namespace triagens {
|
||||||
|
|
||||||
void generateCodeString (std::string const&);
|
void generateCodeString (std::string const&);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
/// @brief generate JavaScript code for a list
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
void generateCodeList (AstNode const*);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief generate JavaScript code for an array
|
/// @brief generate JavaScript code for an array
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void generateCodeArray (AstNode const*);
|
void generateCodeArray (AstNode const*);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief generate JavaScript code for an object
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void generateCodeObject (AstNode const*);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// @brief generate JavaScript code for a unary operator
|
/// @brief generate JavaScript code for a unary operator
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Reference in New Issue