Use fmt and std::from_chars to make convert integer to string and convert string to integer more efficient (#6361)

* [Optimize] optimize the speed of converting integer to string

* Use fmt and std::from_chars to make convert integer to string and convert string to integer more efficient

Co-authored-by: caiconghui <caiconghui@xiaomi.com>
This commit is contained in:
caiconghui
2021-08-04 10:55:19 +08:00
committed by GitHub
parent 16bc5fa585
commit d1007afe80
11 changed files with 71 additions and 123 deletions

View File

@ -217,7 +217,7 @@ public:
//char* tmp_val = reinterpret_cast<char*>(0x01);
ARROW_RETURN_NOT_OK(builder.Append(""));
} else {
ARROW_RETURN_NOT_OK(builder.Append(string_val->to_string()));
ARROW_RETURN_NOT_OK(builder.Append(string_val->ptr, string_val->len));
}
break;
}
@ -230,12 +230,9 @@ public:
break;
}
case TYPE_LARGEINT: {
char buf[48];
int len = 48;
char* v = LargeIntValue::to_string(
reinterpret_cast<const PackedInt128*>(cell_ptr)->value, buf, &len);
std::string temp(v, len);
ARROW_RETURN_NOT_OK(builder.Append(std::move(temp)));
auto string_temp = LargeIntValue::to_string(
reinterpret_cast<const PackedInt128*>(cell_ptr)->value);
ARROW_RETURN_NOT_OK(builder.Append(string_temp.data(), string_temp.size()));
break;
}
default: {