Monomorfizacja
W językach programowania monomorfizacja to proces kompilacji , w którym funkcje polimorficzne są zastępowane wieloma funkcjami monomorficznymi dla każdej unikalnej instancji. Ta transformacja jest pożądana, ponieważ wtedy wyjściowa reprezentacja pośrednia (IR) będzie miała konkretne typy i będzie mogła być lepiej zoptymalizowana. Co więcej, większość IR zaprojektowano tak, aby były niskiego poziomu i nie obsługiwały polimorfizmu. Kod generowany w ten sposób jest zwykle szybszy niż typy pudełkowe , ale może się wolniej kompilować i zajmować więcej miejsca ze względu na powielanie treści funkcji.
Przykład
To jest przykład użycia ogólnej funkcji tożsamości w Rust
fn id < T > ( x : T ) -> T { return x ; } fn main () { niech int = id ( 10 ); niech string = id ( "jakiś tekst" ); drukuj! ( "{int}, {string}" ); }
Po monomorfizacji stałoby się to
fn id_i32 ( x : i32 ) -> i32 { powrót x ; } fn id_str ( x : & str ) -> & str { return x ; } fn main () { niech int = id_i32 ( 10 ); niech string = id_str (
"jakiś tekst" ); drukuj! ( "{int}, {string}" ); }
Zobacz też
Kategoria: