MCPcopy Create free account
hub / github.com/apache/datafusion / array_data

Function array_data

datafusion/functions/benches/substr_index.rs:104–147  ·  view source on GitHub ↗
(
    batch_size: usize,
    single_char_delimiter: bool,
)

Source from the content-addressed store, hash-verified

102}
103
104fn array_data(
105 batch_size: usize,
106 single_char_delimiter: bool,
107) -> (Vec<String>, Vec<String>, Vec<i64>) {
108 let count_dist = Filter {
109 dist: Uniform::new(-4, 5).expect("valid count distribution"),
110 test: |x: &i64| x != &0,
111 };
112 let mut rng = StdRng::seed_from_u64(ARRAY_DATA_SEED);
113 let mut strings = Vec::with_capacity(batch_size);
114 let mut delimiters = Vec::with_capacity(batch_size);
115 let mut counts = Vec::with_capacity(batch_size);
116
117 for _ in 0..batch_size {
118 let length = rng.random_range(20..50);
119 let base = random_token(&mut rng, length);
120
121 let (string_value, delimiter) = if single_char_delimiter {
122 let char_idx = rng.random_range(0..base.chars().count());
123 let delimiter = base.chars().nth(char_idx).unwrap().to_string();
124 (base, delimiter)
125 } else {
126 let long_delimiters = ["|||", "***", "&&&", "###", "@@@", "$$$"];
127 let delimiter =
128 long_delimiters[rng.random_range(0..long_delimiters.len())].to_string();
129
130 let delimiter_count = rng.random_range(1..4);
131 let mut result = String::new();
132 for i in 0..delimiter_count {
133 result.push_str(&base);
134 if i < delimiter_count - 1 {
135 result.push_str(&delimiter);
136 }
137 }
138 (result, delimiter)
139 };
140
141 strings.push(string_value);
142 delimiters.push(delimiter);
143 counts.push(count_dist.sample(&mut rng));
144 }
145
146 (strings, delimiters, counts)
147}
148
149fn scalar_data(batch_size: usize, delimiter: &str) -> Vec<String> {
150 let mut rng = StdRng::seed_from_u64(SCALAR_DATA_SEED);

Callers 1

criterion_benchmarkFunction · 0.85

Calls 8

newFunction · 0.85
random_tokenFunction · 0.85
nthMethod · 0.80
countMethod · 0.45
to_stringMethod · 0.45
lenMethod · 0.45
pushMethod · 0.45
sampleMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…