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ż