Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
copy_array_data in datafusion::common::scalar - Rust
[go: Go Back, main page]

Function copy_array_data

Source
pub fn copy_array_data(src_data: &ArrayData) -> ArrayData
Expand description

Compacts the data of an ArrayData into a new ArrayData.

This is useful when you want to minimize the memory footprint of an ArrayData. For example, the value returned by Array::slice still points at the same underlying data buffers as the original array, which may hold many more values. Calling copy_array_data on the sliced array will create a new, smaller, ArrayData that only contains the data for the sliced array.

ยงExample

use datafusion_common::scalar::copy_array_data;
let array = Int32Array::from_iter_values(0..8192);
// Take only the first 2 elements
let sliced_array = array.slice(0, 2);
// The memory footprint of `sliced_array` is close to 8192 * 4 bytes
assert_eq!(32864, sliced_array.get_array_memory_size());
// however, we can copy the data to a new `ArrayData`
let new_array = make_array(copy_array_data(&sliced_array.into_data()));
// The memory footprint of `new_array` is now only 2 * 4 bytes
// and overhead:
assert_eq!(160, new_array.get_array_memory_size());

See also ScalarValue::compact which applies to ScalarValue instances as necessary.