MCPcopy Create free account
hub / github.com/apache/arrow / GenerateTestFields

Function GenerateTestFields

cpp/src/arrow/json/parser_benchmark.cc:55–82  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

53}
54
55FieldVector GenerateTestFields(int num_fields, int mean_name_length) {
56 const std::shared_ptr<DataType> types[] = {boolean(), int64(), float64(), utf8()};
57
58 std::default_random_engine engine(kSeed);
59
60 std::poisson_distribution<int> length_dist(mean_name_length);
61 std::uniform_int_distribution<uint16_t> char_dist(32, 126);
62 std::uniform_int_distribution<size_t> type_dist(0, std::size(types) - 1);
63
64 std::unordered_set<std::string> names;
65 names.reserve(num_fields);
66
67 while (static_cast<int>(names.size()) < num_fields) {
68 auto length = length_dist(engine);
69 if (!length) continue;
70 std::string name(length, '\0');
71 for (auto& ch : name) ch = static_cast<char>(char_dist(engine));
72 names.emplace(std::move(name));
73 }
74
75 FieldVector fields;
76 fields.reserve(num_fields);
77 for (const auto& name : names) {
78 fields.push_back(field(name, types[type_dist(engine)]));
79 }
80
81 return fields;
82}
83
84FieldVector TestFields() { return {field("int", int32()), field("str", utf8())}; }
85

Callers 1

ParseJSONFieldsFunction · 0.85

Calls 5

push_backMethod · 0.80
sizeFunction · 0.50
fieldFunction · 0.50
reserveMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected