Estimated memory usage of the dense CSR in bytes. Used for SpillController utilization calculation.
(&self)
| 107 | /// |
| 108 | /// Used for SpillController utilization calculation. |
| 109 | pub fn estimated_memory_bytes(&self) -> usize { |
| 110 | let offsets = (self.out_offsets.len() + self.in_offsets.len()) * 4; |
| 111 | let targets = (self.out_targets.len() + self.in_targets.len()) * 4; |
| 112 | let labels = (self.out_labels.len() + self.in_labels.len()) * 2; |
| 113 | let weights = self.out_weights.as_ref().map_or(0, |w| w.len() * 8) |
| 114 | + self.in_weights.as_ref().map_or(0, |w| w.len() * 8); |
| 115 | let buffer: usize = self |
| 116 | .buffer_out |
| 117 | .iter() |
| 118 | .chain(self.buffer_in.iter()) |
| 119 | .map(|b| b.len() * 6) // (u16 + u32) per entry |
| 120 | .sum(); |
| 121 | let buffer_weights: usize = self |
| 122 | .buffer_out_weights |
| 123 | .iter() |
| 124 | .chain(self.buffer_in_weights.iter()) |
| 125 | .map(|b| b.len() * 8) |
| 126 | .sum(); |
| 127 | let interning = self.id_to_node.iter().map(|s| s.len() + 24).sum::<usize>() |
| 128 | + self.id_to_label.iter().map(|s| s.len() + 24).sum::<usize>(); |
| 129 | offsets + targets + labels + weights + buffer + buffer_weights + interning |
| 130 | } |
| 131 | } |
| 132 | |
| 133 | #[cfg(test)] |