Ну вот, после моих переделок текст, который раньше переводился в Вакане минуту 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 байта на хекс-код).

@темы: Компьютеры

Комментарии
22.11.2012 в 15:15

Подозреваю, что тут изложен краткий план захвата мира. Вас надо в ФСБ направить, для допроса.
22.11.2012 в 17:06

А что это за язык?
22.11.2012 в 18:11

chi yo ta ni ke ra ha to ho ra su te no ha te ki ra to na ri ha shi te
Это вместо этого?

А что это за язык?

Дельфя вроде)
22.11.2012 в 18:59

Crawling Chaos, не, это вместо
if (Uppercase(curkana)=Uppercase(roma[i])) then
(эта строчка выполняется 280 899 647 раз на моём тексте, и 280 899 647 раз одни и те же строки переводились в верхний регистр...)

А с нулём всё оказалось просто. Гипотезы перевода хранятся в формате [1 символ приоритет][2 символа длина][1 символ буква тип слова][гипотеза]. Если длина меньше десяти, то её надо предварить нулём...
Разумеется, я просто написал нормальное хранилище для гипотез, в виде структур а не форматированных строк.
se.Add(max(9-j, 0), i, 'F', copy(_s,1,i*4));
23.11.2012 в 14:25

Программисты, это маги XXI века.
23.11.2012 в 14:50

chi yo ta ni ke ra ha to ho ra su te no ha te ki ra to na ri ha shi te
Программисты, это маги XXI века.

Yoku Wakaru Gendai Mahou :3
26.11.2012 в 00:34

зашли автору коммит :3
26.11.2012 в 01:11

Гость, так заслал.