:: Visual Foxpro, Foxpro for DOS
Re: сделать красиво перекодировку
sphinx

—ообщений: 31492
ќткуда:  аменск-”ральски
ƒата регистрации: 22.11.2006
÷итата:
» это вместо массивов или курсоров.

Ѕольшинство (соглашусь - Ќ≈ все) задач все же делаютс€ через массивы/курсоры. Ёто универсальность. я тоже давал ссылку на сайт (хоть и не требовалось по задаче “—) - и обратный перевод. » объ€сн€лось, ѕќ„≈ћ” именно такие 2-символьные аналоги (реже три). » это (не провер€л, поверил автору) - должно работать.

ћиш, твой код пон€тен. » неплох. Ќо это не универсальный код. ƒавай € по€сню свою мысль.
” теб€ есть два справочника с улицами, которые набили в EditBox (да, без справочников). Ќужно выровн€ть, свести разные названи€ улиц слева и те же улицы (но в другом написании) справа.  ак делает начинающий, или немного дилетант. ѕишет IF. » так с каждой улицей.  ак делать по уму и быстро?

 ак бы ты сделал? (€ писал про транслитерацию, как € ее ”—Ћќ¬Ќќ обозвал).


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
lemenev

—ообщений: 146
ƒата регистрации: 23.06.2022
я имел в виду, что если функци€ CHRTRAN однозначно, быстро и Ђза один присестї конвертирует 50 символов из латинских в русские, то зачем заводитьс€ с массивами или курсорами?
≈щЄ 17 комбинаций однозначно конвертируютс€ с помощью STRTRAN. ƒа, дл€ них можно воспользоватьс€ массивами. Ќо код будет длинее.
ј оставшиес€ 6 комбинаций можно конвертировать только с участием человека, если только не ты сам переводил в транслит с помощью программы, обеспечивающей однозначность перевода. “ак что какие IF ?

“еперь о твоей задаче.
≈сли € правильно пон€л, то есть таблица с двум€ пол€ми ЂЌазвание по-русскиї и ЂЌазвание в транслитї.  онечно вводить нужно только русские названи€, а транслит получать программно. Ёто гарантирует однозначность перевода. ≈сли этого сделано не было, и поле ЂЌазвание в транслитї вводилось вручную, то ни о какой однозначности речи быть не может.
¬ этом случае нужно прогнать по всей таблице программную конвертацию пол€ ЂЌазвание по-русскиї в поле ЂЌазвание в транслитї. » ни каких выравниваний, сведений, IF и т.д.
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
akvvohinc

—ообщений: 4312
ќткуда: ћосква
ƒата регистрации: 11.11.2008
÷итата:
я имел в виду, что если функци€ CHRTRAN однозначно, быстро и Ђза один присестї конвертирует 50 символов из латинских в русские, то зачем заводитьс€ с массивами или курсорами?
≈щЄ 17 комбинаций однозначно конвертируютс€ с помощью STRTRAN.
ƒолжен вас разочаровать - функци€ CHRTRAN() работает в разы (примерно в 20 раз) медленнее, чем SYS(15), котора€ использовалась с той же целью в первом варианте решени€.

Ќо вы существенно упростили задачу, сказав, что скорость вас не интересует (на мегабайтных строках ваша функци€ начнет "умирать", причем, совсем не пр€мо пропорционально длине).
ј значит, и не стоит сравнивать ваше решение с теми, которые пытаютс€ сделать то же, но не в ущерб скорости.

÷итата:
Ќо код будет длиннее
¬о-первых, вр€д ли.
ј во-вторых, длина кода в исходниках может интересовать только тех, кто или кому плат€т за такую длину.
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
kornienko_ru
јвтор

—ообщений: 258
ќткуда: ¬ладивосток
ƒата регистрации: 06.09.2015
** вот здесь как написать cTE = ?
s1 = SYS(15, cTE, 'съешь же ещЄ этих м€гких французских булок, да выпей чаю')
s1 = STRTRAN( s1, '€', 'ya')
s1 = STRTRAN( s1, 'ч', 'ch')
s1 = STRTRAN( s1, 'щ', 'sch')
s1 = STRTRAN( s1, 'ш', 'sh')
s1 = STRTRAN( s1, 'ц', 'ts')
s1 = STRTRAN( s1, 'ь', '')
s1 = STRTRAN( s1, 'ъ', '')
s1 = STRTRAN( s1, 'ж', 'zh')
s1 = STRTRAN( s1, 'ю', 'yu')
? s1
„то-то долго обсуждают эту тему... загл€нул.

јртем, а если так:
** вот здесь как написать cTE1,cTE2,cTE3 = ?
d='съешь же ещЄ этих м€гких французских булок, да выпей чаю'
cTE0=' !"#$%&'+"'"
cTE_=spac(39)
cTE1=cTE0+"()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶ІJ©™Ђђ≠Ѓѓ∞±≤≥іµґЈjєЇїЉљЊњABVGDEZZIIKLMNOPRSTUFKCCSS'Y'EJJabvgdezziiklmnoprstufkccss'y'ejj"
cTE2=cTE_+" O o H H HHH HUA h h hhh hua"
cTE3=cTE_+" H h "
s1 = SYS(15, cTE1, m.d) && 1-й латинский симол
s2 = SYS(15, cTE2, m.d) && 2-й латинский симол
s3 = SYS(15, cTE3, m.d) && 3-й латинский симол
s=""
for i=1 to len(m.d)
s=m.s+subs(m.s1,m.i,1)
x=subs(m.s2,m.i,1)
if m.x<>" "
s=m.s+m.x
x=subs(m.s3,m.i,1)
if m.x<>" "
s=m.s+m.x
endi
endi
endf
? s



»справлено 2 раз(а). ѕоследнее : kornienko_ru, 10.07.24 09:41
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
akvvohinc

—ообщений: 4312
ќткуда: ћосква
ƒата регистрации: 11.11.2008
kornienko_ru
вот здесь как написать cTE1,cTE2,cTE3 = ?
“о есть јртем поинтересовалс€, как ему получить cTE, а теперь вы спрашиваете, как вам получить cTE1, cTE2 и cTE3?

¬ы бы сначала описали словами алгоритм, раз уж запустить ваш код невозможно.

PS
ј 2-3 раза посимвольно разбирать строку - это точно будет быстро работать?



»справлено 1 раз(а). ѕоследнее : akvvohinc, 10.07.24 07:31
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
kornienko_ru
јвтор

—ообщений: 258
ќткуда: ¬ладивосток
ƒата регистрации: 06.09.2015
—ергей, а по культурней?
—читал эти строки очевидными, поэтому в первый раз не написал. ќпускаюсь до низшего уровн€, расписываю строки исправлением поста..... “ри строки, кажда€ 255 байт. ќбъ€сн€ть, что за символы? я уж не знаю... надо ли? ѕервым идет символ с кодом 1 и т.д. до 255, нулевого нет.
Ќасчет описани€ алгоритма.... думаю несколько строк пон€ть труда не составл€ет? ѕо крайней мере дл€ јртема. √де вы там увидели трехкратный перебор в одинарном цикле? Ѕуквы с двум€ латинскими символами довольно редки, тем более с трем€ всего одна буква, точнее две -- заглавна€ и прописна€. ѕоэтому на дополнительное второе и третье сложение символа будет уходить минимум времени.
—уд€ по рекомендации использовать sys(15), как наиболее быструю операцию, работать будет быстро.

PS ѕроверил, всЄ работает. ѕрилагаю [attachment 36896 StoS.prg]



»справлено 4 раз(а). ѕоследнее : kornienko_ru, 10.07.24 11:50
Ratings: 1 negative/2 positive
Re: сделать красиво перекодировку
kornienko_ru
јвтор

—ообщений: 258
ќткуда: ¬ладивосток
ƒата регистрации: 06.09.2015
јртЄм
нужно кириллицу превратить в латинские буквы по установленным правилам.
два вопроса.
- как сделать красиво
- как в коде программы моей переменной cTE присвоить значение , то которое в ней записано
пока так

јртем доработал твой пример, дополнительно вставил 9 strtran-ов дл€ заглавных букв (у теб€ в коде замен€ютс€ только маленькие), чтобы были равные услови€, вынес строки m.d и все cTE, cTE1,cTE2,cTE3 за цикл, протестировал только врем€ на перекодировку. ¬ариант с использованием 1 sys(15) и 18 strtran-ов быстрее ровно в 2,5 раза варианта без strtran-ов с 3-м€ sys(15). “.о. пока наиболее быстрый вариант с 1-им sys(15) и 18-ти транами, которые замен€ютс€ 2-м€ или 3-м€ латинскими. ѕример со строками € показал.  оманда sys(15) перекодирует только 1 символ в 1 символ, поэтому там, где 2 и 3 символа лучше делать транами после sys(15). ѕример перекодировки 1000 раз выражени€ про булочки с 1-им sys(15) и 18 транами длилс€ 43 мс, а с 3-м€ sys(15) Ч 108 мс.
Ratings: 0 negative/1 positive
Re: сделать красиво перекодировку
akvvohinc

—ообщений: 4312
ќткуда: ћосква
ƒата регистрации: 11.11.2008
kornienko_ru
—читал эти строки очевидными, поэтому в первый раз не написал. ќпускаюсь до низшего уровн€
» это правильно - низшему уровню эти строки, очевидно, не очевидны.

kornienko_ru
у теб€ в коде замен€ютс€ только маленькие
¬ы не пон€ли - правила замены придумывал не € - таково было задание јртема:
јртЄм
нужно кириллицу превратить в латинские буквы по установленным правилам.
«амен€ютс€ не только маленькие - замен€ютс€ любые символы кириллицы, но прописные символы превращаютс€ в строчные.
“аковы "установленные правила".

kornienko_ru
јртем доработал твой пример, дополнительно вставил 9 strtran-ов дл€ заглавных букв
Ќаоборот.
я ничего не мен€л в примере јртЄма, кроме того, что ответил на его вопрос про cTE.
» мне не удалось найти пост јртЄма, где он вставил "9 strtran-ов дл€ заглавных букв".

¬аш алгоритм не соответствует "заданию јртЄма" - он переводит Cyr -> Lat по другим правилам.

kornienko_ru
ѕример перекодировки 1000 раз выражени€ про булочки с 1-им sys(15) и 18 транами длилс€ 43 мс, а с 3-м€ sys(15) Ч 108 мс.
≈сли забыть "про булочки" и создать "нормальный" тест, то он покажет, что ваш вариант уступает варианту јртЄма (не самому быстрому из предложенных) на пор€док (груба€ оценка).

»“ќ√ќ
Ќесмотр€ на то, что в начале первого сообщени€ вы €вно за€вили о намерении "закрыть" эту зат€нувшуюс€ тему:
kornienko_ru
„то-то долго обсуждают эту тему... загл€нул.
на данный момент это вам не удалось.

¬ы лишь показали нам ещЄ один - соглашусь, оригинальный, вариант решени€.
ƒумаю, ради оригинальности так "таинственно" - мол, разбирайтесь в алгоритме сами - всЄ вначале и было обставлено.



»справлено 3 раз(а). ѕоследнее : akvvohinc, 10.07.24 18:13
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
akvvohinc

—ообщений: 4312
ќткуда: ћосква
ƒата регистрации: 11.11.2008
kornienko_ru
√де вы там увидели трехкратный перебор в одинарном цикле? Ѕуквы с двум€ латинскими символами довольно редки, тем более с трем€ всего одна буква, точнее две -- заглавна€ и прописна€. ѕоэтому на дополнительное второе и третье сложение символа будет уходить минимум времени.
я в одинарном цикле увидел 3 команды извлечени€ одиночного символа из строки - subs(m.s1,m.i,1) и т.п.
ѕервые две - безусловные, а треть€ - условна€.
»менно эти команды, в первую очередь, и замедл€ют работу, причем, тем сильнее, чем длиннее исходна€ строка (€ не "про "булочки").

ѕоэтому и написал:
akvvohinc
ј по 2-3 раза посимвольно разбирать строку - это точно будет быстро работать?
ќказалось, что не очень.



»справлено 1 раз(а). ѕоследнее : akvvohinc, 10.07.24 18:54
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
kornienko_ru
јвтор

—ообщений: 258
ќткуда: ¬ладивосток
ƒата регистрации: 06.09.2015
—ергей.
Ёто просто бла-бла. ¬ы сами то не сделали ни-че-го. «а метод с использованием sys(15) топили вы, € просто реализовал вашу идею на практике и оказалась, что она ваша иде€ тупикова€. »спользование цикла в этом случае и проверки на 2-й символ Ч это неизбежность, другого варианта здесь не существует. » говорить, что это плохо оп€ть-таки Ч бессмысленное сотр€сание воздуха, т.к. другого варианта реализации вашей идеи нет.

ќтсюда вывод Ч не всегда нужно использовать самые быстрые функции, важнее при обработке строк минимизировать использование циклов. √ораздо лучше использовать непроизводительные strtran-ы.

Ќу а про большие и маленькие Ч ну это тоже бла-бла. ѕерекодировка в этой ветке стала рассматриватьс€ шире. “ут и обратную перекодировку стали обсуждать.... Ќу и написали бы им свою порт€нку  огда задача выходит на широкого потребител€, так бывает, что эта задача расшир€етс€.

PS
Ќу вы мен€ —ергей и удивили своими познани€ми, что извлечение 1 символа из строки командой subs(s,m.i,1) это очень медленно ѕри этом оп€ть таки ничего другого, никакого другого варианта извлечени€ символа, не предложили. ѕодскажите, может есть другой более быстрый способ, как извлечь 1 символ из строки.... ћожет использовать какую-нибудь dll 32-х битную?



»справлено 1 раз(а). ѕоследнее : kornienko_ru, 11.07.24 02:06
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
akvvohinc

—ообщений: 4312
ќткуда: ћосква
ƒата регистрации: 11.11.2008
kornienko_ru
«а метод с использованием sys(15) топили вы, € просто реализовал вашу идею на практике
¬ы ошибаетесь - € в этой теме ни за что не топил, своих идей не высказывал - оценивал лишь скорость предлагаемых чужих решений.

ј про SYS(15) € написал буквально следующее:
÷итата:
«десь SYS(15) отработает очень быстро, но зато на дев€ть STRTRAN() потребуетс€ времени примерно в 20 раз больше.
÷итата:
функци€ CHRTRAN() работает в разы (примерно в 20 раз) медленнее, чем SYS(15), котора€ использовалась с той же целью в первом варианте решени€.
Ќепон€тно, почему вы восприн€ли эти слова, как руководство к действию - это просто сравнительна€ оценка скорости SYS(15).

ќна и в вашем варианте отработает быстро (чего не скажешь про три SUBSTR() в цикле).

kornienko_ru
¬ы сами то не сделали ни-че-го.
ј должен был?
јртЄм (автор темы) задал вопрос о cTE - € ответил как смог. ” него претензий ко мне не было.

Ќе совсем понимаю, почему претензии по€вились у вас.
¬ы считаете, что € повли€л на скорость предложенного вами решени€?
»ли неверно еЄ оценил? (это вы назвали "бла-бла"?)

kornienko_ru
Ќу а про большие и маленькие Ч ну это тоже бла-бла.
—огласен, но именно вы высказали мне это "бла-бла" первым:
kornienko_ru
у теб€ в коде замен€ютс€ только маленькие
и € решил, что дл€ вас это важно.



»справлено 4 раз(а). ѕоследнее : akvvohinc, 11.07.24 03:03
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
akvvohinc

—ообщений: 4312
ќткуда: ћосква
ƒата регистрации: 11.11.2008
kornienko_ru
Ќу вы мен€ —ергей и удивили своими познани€ми, что извлечение 1 символа из строки командой subs(s,m.i,1) это очень медленно ѕри этом оп€ть таки ничего другого, никакого другого варианта извлечени€ символа, не предложили. ѕодскажите, может есть другой более быстрый способ, как извлечь 1 символ из строки
–ад, что удивил.
Ќо € не мог написать просто "быстро" или "медленно" - всЄ относительно.

ѕо поводу - "ѕодскажите...".
¬ы дали пон€ть, что прочитали всю ветку - но ответ на эту просьбу в теме имеетс€ - вы можете проверить этот вариант (это не DLL, FLL и не WinAPI),
сравнить его скорость с subs(s,m.i,1) и удивитьс€ ещЄ раз.



»справлено 2 раз(а). ѕоследнее : akvvohinc, 11.07.24 02:49
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
kornienko_ru
јвтор

—ообщений: 258
ќткуда: ¬ладивосток
ƒата регистрации: 06.09.2015
 онечно все не читал... ѕосмотрел... ќчевидно вы имеете в виду запись строки в файл и чтение €кобы быстрее извлечени€ символа по пор€дковому номеру? » там есть, кто на это отвечает, что выйгрыша от этого извращени€ нет. я так думаю, что никакого выйгрыша не будет на мелких строках... на супер длинных в виду ограничений по пам€ти у VFP Ч другое дело. ƒанное обсуждение, как видно из темы дл€ мелких строк. –ассматривание нереальной задачи Ч это троллинг и бла бла.

” мен€ рука не подниметс€ обрабатывать строки через файлы.... »звращение же. ƒл€ ускорени€ обработки существует ќѕ. VFP - это универсальна€ среда, здесь не только Ѕƒ, но и сложные математические функции.
Ratings: 0 negative/1 positive
Re: сделать красиво перекодировку
akvvohinc

—ообщений: 4312
ќткуда: ћосква
ƒата регистрации: 11.11.2008
kornienko_ru
ƒанное обсуждение, как видно из темы дл€ мелких строк.
¬ы же сами сказали, что тема вышла за границы вопроса јртема.
ј раз так, то речь шла о функции преобразовани€ строк - при этом на размер строк никто (до вас) ограничений не накладывал.
(может, кто-то с еЄ помощью захочет "¬ойну и мир" обработать?)

kornienko_ru
” мен€ рука не подниметс€ обрабатывать строки через файлы
ќп€ть претензи€ или недовольство.

¬ы попросили - "ѕредложите более быстрый способ, чем SUBSTR()" - € предложил.
≈стественно, € не мог заранее знать, на что у вас подниметс€ рука, а на что нет.

ј предложенный способ может быть нужен тем и тогда, когда скорость желательно увеличить.
ѕока такой необходимости и желани€ нет - пользуйтесь SUBSTR() - это простое, удобное средство.

kornienko_ru
–ассматривание нереальной задачи Ч это троллинг и бла-бла.
¬се задачи, с которыми вы пока не столкнулись, можно отнести к нереальным, тем более, если степень реальности вы сами и будете определ€ть.
–иторический вопрос - если задача нереальна, то зачем же вы сами стали вдруг измер€ть наносекунды?
Ќе сразу заметили троллинг или задача на микросекунду показалась вам всЄ же реальной?
---------

Ќо кроме обычного бла-бла у мен€ есть и вопросы:
— какой целью вы предложили ещЄ одно решение, если видели, что задача решена и даже не одним способом?
¬ чем его преимущества? ѕочему у кого-то должна подн€тьс€ рука, чтобы им воспользоватьс€?
ќни же должны быть, ведь иначе, как вы здесь неоднократно повтор€ли - это просто ещЄ одно "бла-бла" (или троллинг? - € уже запуталс€).
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
ssa

—ообщений: 13025
ќткуда: ћосква
ƒата регистрации: 23.03.2005
kornienko_ru
” мен€ рука не подниметс€ обрабатывать строки через файлы
Ќу так уже предложено средство и без файлов. „итать внимательно не пробовали? «аодно и про вы»»»»»»»»грыши разных способов инфу бы получили...

------------------
Ћень - это неосознанна€ мудрость.
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
lemenev

—ообщений: 146
ƒата регистрации: 23.06.2022
akvvohinc
функци€ CHRTRAN() работает в разы (примерно в 20 раз) медленнее, чем SYS(15), котора€ использовалась с той же целью в первом варианте решени€.
akvvohinc
на мегабайтных строках ваша функци€ начнет "умирать", причем, совсем не пр€мо пропорционально длине

я решил сравнить ваше решение и своЄ. я убрал функции STRTRAN(), оставив только SYS(15) и CHRTRAN() и поставив миллион итераций.
NN = 1000000
StringIn = 'съешь же ещЄ этих м€гких французских булок, да выпей чаю'
L = 'abvgdeжziyklmnoprstufhцчшщъyьeю€'
cTE = ''
FOR i=1 TO 192
DO CASE
CASE i=32
cTE = cTE + '_'
CASE BETWEEN(i,65,90)
cTE = cTE + CHR(i+32)
CASE INLIST(i,168,184)
cTE = cTE + 'e'
CASE i=192
cTE = cTE + L + L
OTHERWISE
cTE = cTE + CHR(i)
ENDCASE
ENDFOR
sec1 = SECONDS()
FOR i = 1 TO NN
s1 = SYS(15, cTE, StringIn)
ENDFOR
sec2 = SECONDS()
?sec2-sec1
*-------------------------------
sec1 = SECONDS()
FOR i = 1 TO NN
StringOut = CHRTRAN(StringIn, ;
'јЅ¬√ƒ≈«»… ЋћЌќѕ–—“”‘’÷’џабвгдезийклмнопрстуфхсхы ', ;
'ABVGDEZIJKLMNOPRSTUFHCXYabvgdezijklmnoprstufhchy_-' )
ENDFOR
sec2 = SECONDS()
?sec2-sec1
ƒействительно в вашем случае врем€ выполнени€ получилось 0,571 секунды, а в моЄм Ц 4,421 секунды.
Ќо скажите, в каких задачах может встретитьс€ миллион применений подобной функции или мегабайтные строки, и так ли уж важно при таких объЄмах 5 секунд ожидани€? »ли это чисто Ђспортивный интересї - борьба за скорость?
ј уж про компактность и пон€тность кода € не говорю.
Ratings: 0 negative/1 positive
Re: сделать красиво перекодировку
sphinx

—ообщений: 31492
ќткуда:  аменск-”ральски
ƒата регистрации: 22.11.2006
÷итата:
Ќо скажите, в каких задачах может встретитьс€ миллион применений подобной функции

Ѕиллинг, банковские транзакции. “ам дес€тки и сотни миллионов записей.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
leonid

—ообщений: 3216
ќткуда: –ига
ƒата регистрации: 03.02.2006
akvvohinc
на мегабайтных строках ваша функци€ начнет "умирать", причем, совсем не пр€мо пропорционально длине

ƒумаю, тут ¬ы ошибаетесь. ¬ыгл€дит, что как раз пр€мо пропорционально длине.

StringIn = 'съешь же ещЄ этих м€гких французских булок, да выпей чаю'
StringIn = REPLICATE(StringIn, 100000)
*-------------------------------
sec1 = SECONDS()
StringOut = CHRTRAN(StringIn, ;
'јЅ¬√ƒ≈«»… ЋћЌќѕ–—“”‘’÷’џабвгдезийклмнопрстуфхсхы ', ;
'ABVGDEZIJKLMNOPRSTUFHCXYabvgdezijklmnoprstufhchy_-' )
sec2 = SECONDS()
?sec2-sec1
StringIn = REPLICATE(StringIn, 2)
sec1 = SECONDS()
StringOut = CHRTRAN(StringIn, ;
'јЅ¬√ƒ≈«»… ЋћЌќѕ–—“”‘’÷’џабвгдезийклмнопрстуфхсхы ', ;
'ABVGDEZIJKLMNOPRSTUFHCXYabvgdezijklmnoprstufhchy_-' )
sec2 = SECONDS()
?sec2-sec1
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
akvvohinc

—ообщений: 4312
ќткуда: ћосква
ƒата регистрации: 11.11.2008
leonid
ƒумаю, тут ¬ы ошибаетесь. ¬ыгл€дит, что как раз пр€мо пропорционально длине.
Ћеонид, в том сообщении € лишь в первом абзаце коснулс€ скорости CHRTRAN() по сравнению с SYS(15).

ј во втором абзаце € охарактеризовал скорость работы той UDF() в целом:
÷итата:
ваша функци€ начнет "умирать"
име€ в виду "огромное" количество вызовов STRTRAN().

StringIn = 'съешь же ещЄ этих м€гких французских булок, да выпей чаю'
StringIn = REPLICATE(StringIn, 60000)
FOR k=1 TO 3
sec1 = SECONDS()
= STRTRAN(StringIn,'ш', 'sh', -1,-1,3)
sec2 = SECONDS()
? LEN(StringIn), sec2-sec1
StringIn = StringIn+StringIn
ENDFOR
Ratings: 0 negative/0 positive
Re: сделать красиво перекодировку
leonid

—ообщений: 3216
ќткуда: –ига
ƒата регистрации: 03.02.2006
CHRTRAN упоминалась непосредственно перед той фразой, которую € процитировал, поэтому € подумал, что это про нее. STRTRAN - конечно друга€ истори€, там надо строку раздвигать.
Ratings: 0 negative/0 positive


»звините, только зарегистрированные пользователи могут оставл€ть сообщени€ в этом форуме.

On-line: 13 lemenev  (√остей: 12)

© 2000-2024 Fox Club 
яндекс.ћетрика