Czy mam rację, zakładając, że jedyną rzeczą, która "spowalnia", jest to, że zwalnia obiekt po jego upadku? Poza tym, "ile" jest kosztem dereferencji Rc
, tj. Czy powinienem się tym przejmować?
Czy te dwie funkcje są prawie równie szybkie? Czy jest zauważalna różnica w prędkości?Czy muszę się martwić o obciążenie "Rc"?
fn test_with_box() {
let b = Box::new(1.0);
let x = b * 2;
}
fn test_with_rc() {
let rc = Rc::new(1.0);
let x = rc * 2;
}
Ponieważ obiekt odwołuje się test_with_rc()
zawsze tylko jedno odniesienie i zachowuje się jak Box
w tej funkcji (patrząc od zewnątrz, a nie od wewnątrz, oczywiście).
Podejrzewam, że Rc
s są rzeczywiście szybsze niż myślę.
PS: Mówiąc o "szybkim" mam na myśli zarówno dereferencję, jak i alokację/zwolnienie.
Jak zawsze w przypadku pytań dotyczących wydajności, jedynym sposobem na poznanie jest profilowanie go na miejscu. Mikro-testy porównawcze nie są odpowiednie. –