[hunspell-fi-devel] libvoikko-0.2 - voikko_do_spell() optimointia
Reijo Tomperi
reijo.tomperi at pp2.inet.fi
Tue Apr 25 16:41:42 EEST 2006
Reijo Tomperi wrote:
>libvoikko-0.2:ssa voikko_spell.c tiedostossa voikko_do_spell()
>funktiossa, analyse_item() kutsu ei muuta parametrikseen saamaa
>merkkijonoa, joten voimme antaa sille parametriksi alkuperäisen
>merkkijonon kopion sijaan, jolloin vältymme yleensä muistin varaamiselta
>ja kopioimiselta.
>
>Saavutettu hyöty on melko mitätön, mutta kun nyt tuon koodimuutoksen
>tein, niin ajattelin laittaa eteenpäin.
>
>int voikko_do_spell(const char * word) {
>
>
Unohtui taas kokonaan, että vanhassa C-standardissahan muuttujat piti
esitellä funktion alussa. Eli jos haluamme tukea myö vanhempia kääntäjiä
niin:
int voikko_do_spell(const char * word) {
char * buffer;
analyse_item(word, MORPHOLOGY);
if (first_analysis_result()) return VOIKKO_SPELL_OK;
if (voikko_options.ignore_dot && strlen(word) > 1 &&
word[strlen(word) - 1] == '.') {
buffer = malloc(strlen(word) + 1);
if (!buffer) return VOIKKO_INTERNAL_ERROR;
strcpy(buffer, word);
buffer[strlen(word) - 1] = '\0';
analyse_item(buffer, MORPHOLOGY);
free(buffer);
if (first_analysis_result()) return VOIKKO_SPELL_OK;
}
return VOIKKO_SPELL_FAILED;
}
More information about the devel
mailing list