String allas

Merkkijonojen yhdistäminen viittaa kahdentyyppisiin merkkijonoihin liittyviin kääntäjien optimointiin : 

  1. Vähennä koodin määrää yhdistämällä samat rivit eri moduuleista.
  2. Laiskoja merkkijonojen määrityksiä viitelaskurin avulla ( kopiointi -kirjoitus ).

Yhdistämällä merkkijonoja eri moduuleista

Lähdekoodia käsitellessä kääntäjän on sijoitettava jokainen kirjaimellinen merkkijono hallitun moduulin metatietoihin. Jos yksi rivi esiintyy monta kertaa lähdekoodissa, kaikkien tällaisten rivien sijoittaminen metatietoihin saa tuloksena olevan tiedoston kasvamaan.

Koodin kasvun estämiseksi monet kääntäjät (mukaan lukien C# -kääntäjä ) tallentavat vain yhden kirjaimellisen merkkijonon esiintymän moduulin metatietoihin. Kääntäjä korvaa kaikki viittaukset tähän merkkijonoon lähdekoodissa viittauksilla sen esiintymään metatiedoissa. Tämä pienentää merkittävästi moduulin kokoa. Menetelmä ei ole uusi - tämä mekanismi on ollut olemassa C / C ++ -kääntäjissä pitkään. Microsoft C/C++ -kääntäjässä tätä kutsutaan merkkijonojen yhdistämiseksi. Tämä on toinen työkalu, jonka avulla voit nopeuttaa merkkijonojen käsittelyä.

Lazy string assignments

Tyypillisesti merkkijono on suuri objekti , joka vaatii suuren lohkon muistia toimiakseen . Tämä optimointi varaa muistia merkkijonoille vain tarvittaessa, jolloin useat muuttujat voivat osoittaa samaan merkkijonoon. Vain jos jokin muuttujista muuttaa sisältöään, merkkijono kopioidaan.

Samanlainen optimointi on olemassa roskakirjoissa kerätyissä kielissä siinä muodossa, että merkkijono on muuttumaton objekti, eikä tehtävä a=bluo uutta merkkijonoa. Tämän ratkaisun haittana on, että ohjelmoijan täytyy tuntea ja käyttää sisäistä merkkijonorakennemekanismia, kuten StringBuilder( Java ).

Kirjallisuus

Linkit