MCPcopy Create free account
hub / github.com/apache/arrow-rs / test_memory_size_dictionary

Function test_memory_size_dictionary

arrow-array/src/array/mod.rs:1359–1402  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1357
1358 #[test]
1359 fn test_memory_size_dictionary() {
1360 let values = PrimitiveArray::<Int64Type>::from_iter_values(0..16);
1361 let keys = PrimitiveArray::<Int16Type>::from_iter_values(
1362 (0..256).map(|i| (i % values.len()) as i16),
1363 );
1364
1365 let dict_data_type = DataType::Dictionary(
1366 Box::new(keys.data_type().clone()),
1367 Box::new(values.data_type().clone()),
1368 );
1369 let dict_data = keys
1370 .into_data()
1371 .into_builder()
1372 .data_type(dict_data_type)
1373 .child_data(vec![values.into_data()])
1374 .build()
1375 .unwrap();
1376
1377 let empty_data = ArrayData::new_empty(&DataType::Dictionary(
1378 Box::new(DataType::Int16),
1379 Box::new(DataType::Int64),
1380 ));
1381
1382 let arr = DictionaryArray::<Int16Type>::from(dict_data);
1383 let empty = DictionaryArray::<Int16Type>::from(empty_data);
1384
1385 let expected_keys_size = 256 * std::mem::size_of::<i16>();
1386 assert_eq!(
1387 arr.keys().get_array_memory_size() - empty.keys().get_array_memory_size(),
1388 expected_keys_size
1389 );
1390
1391 let expected_values_size = 16 * std::mem::size_of::<i64>();
1392 assert_eq!(
1393 arr.values().get_array_memory_size() - empty.values().get_array_memory_size(),
1394 expected_values_size
1395 );
1396
1397 let expected_size = expected_keys_size + expected_values_size;
1398 assert_eq!(
1399 arr.get_array_memory_size() - empty.get_array_memory_size(),
1400 expected_size
1401 );
1402 }
1403
1404 /// Test function that takes an &dyn Array
1405 fn compute_my_thing(arr: &dyn Array) -> bool {

Callers

nothing calls this directly

Calls 7

child_dataMethod · 0.80
lenMethod · 0.45
cloneMethod · 0.45
data_typeMethod · 0.45
buildMethod · 0.45
into_builderMethod · 0.45
into_dataMethod · 0.45

Tested by

no test coverage detected