Оптимизация

Ну вот, после моих переделок текст, который раньше переводился в Вакане минуту 10 секунд, переводится за 5 секунд.
Хо-хо!

Полюбуйтесь, что для этого пришлось нагородить:
{$IFDEF INTEGER_HELL}
{
Note on integer comparison optimization:
We're not checking if roma_t[i].hiragana has one or two 4-chars.
It's okay. If it has one, then roma_t[i].hiragana[5]==#00, and it wouldn't match
to any 4-char hex combination.
It also won't AV because the memory's dword aligned and hiragana[5] is accessible already.
}
if ((pinteger(ps)^=pinteger(roma_t[i].hiragana_ptr)^)
and (pinteger(integer(ps)+4)^=pinteger(integer(roma_t[i].hiragana_ptr)+4)^))
or ((pinteger(ps)^=pinteger(roma_t[i].katakana_ptr)^)
and (pinteger(integer(ps)+4)^=pinteger(integer(roma_t[i].katakana_ptr)+4)^)) then begin
{$ELSE}
if FcharCmp(ps, roma_t[i].hiragana_ptr, 2)
or FcharCmp(ps, roma_t[i].katakana_ptr, 2) then begin
{$ENDIF}

Это я здесь сравниваю строки из 4-символов (4 байта на хекс-код).

Напишите комментарий:

Если хотите, можно залогиниться.

*