L'uso di un linguaggio gestito come Java, C # ecc. non ha assolutamente nulla a che fare con il modo in cui i dati sono accessibili dall'unità, e in ogni caso non priva certo gli sviluppatori da un limite di controllo su come, quando e in quale ordine i dati saranno accessibili dall'unità.
Il problema è altrove: i linguaggi gestiti soffrono del sovraccarico delle transizioni gestite da native e native to managed, in cui i dati spesso devono essere copiati dai buffer nativi nei buffer gestiti e dal fatto che non offre un supporto rapido e semplice per operazioni intrinsecamente pericolose come il prelievo di quattro byte da una matrice di byte e la loro interpretazione come numero intero. Quindi, quando vuoi fare una cosa del genere devi invocare una funzione che farà la conversione per te, dove in C ++ useresti solo una singola istruzione macchina che dereferisce un puntatore.
Pertanto, un'implementazione di un B-Tree in un linguaggio gestito ne risentirà, ma non sarà dovuta alla mancanza di controllo su come, quando e in quale ordine si accede ai dati dall'unità.