MCPcopy Create free account
hub / github.com/clockworklabs/SpacetimeDB / memo_query

Function memo_query

crates/bench/src/sqlite.rs:226–254  ·  view source on GitHub ↗

Reduce latency of query formatting, for queries that are complicated to build.

(bench_name: BenchName, table_id: &str, generate_query: F)

Source from the content-addressed store, hash-verified

224#[inline(never)]
225/// Reduce latency of query formatting, for queries that are complicated to build.
226fn memo_query<F: FnOnce() -> String>(bench_name: BenchName, table_id: &str, generate_query: F) -> Arc<str> {
227 // fast path
228 let queries = QUERIES.read().unwrap();
229
230 if let Some(bench_queries) = queries.get(&bench_name)
231 && let Some(query) = bench_queries.get(table_id)
232 {
233 return query.clone();
234 }
235
236 // slow path
237 drop(queries);
238 let mut queries = QUERIES.write().unwrap();
239
240 let bench_queries = if let Some(bench_queries) = queries.get_mut(&bench_name) {
241 bench_queries
242 } else {
243 queries.insert(bench_name, HashMap::default());
244 queries.get_mut(&bench_name).unwrap()
245 };
246
247 if let Some(query) = bench_queries.get(table_id) {
248 query.clone()
249 } else {
250 let query = generate_query();
251 bench_queries.insert(table_id.to_string(), (&query[..]).into());
252 bench_queries[table_id].clone()
253 }
254}
255
256lazy_static! {
257 // bench_name -> table_id -> query.

Callers 2

insert_bulkMethod · 0.85
filterMethod · 0.85

Calls 8

insertMethod · 0.65
unwrapMethod · 0.45
readMethod · 0.45
getMethod · 0.45
cloneMethod · 0.45
writeMethod · 0.45
get_mutMethod · 0.45
to_stringMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…