Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Нужен нормальный текстовый редактор
View unanswered posts
View posts from last 24 hours

Goto page Previous  1, 2, 3, 4  
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
Koshh
n00b
n00b


Joined: 03 Mar 2006
Posts: 32

PostPosted: Fri Mar 17, 2006 1:55 pm    Post subject: Reply with quote

046 wrote:
Вот именно что при операциях с подстрокой известны ПОЗИЦИИ. То есть адреса. В байтах!!! А не в символах. А символы засунь туда, откуда взял длинну подстроки )

Остальное можно опустить - эта фраза самая главная. Позиции - это не адреса. Адреса, кстати, не в байтах - а в числах. В байтах - размер. Но это не принципиально - вернемся к позициям =) Итак, позиция - это число. 0, 1, 2, 3 и так далее. Адрес - это адрес в памяти, что-то вроде 0xDEADBEEF. Итак, ты вызываешь функцию поиска подстроки. что она тебе вернет? _Поизицию_, или _адрес_, в зависимости от языка и библиотеки, начала подстроки в исходной строке. Вопрос - сколько выделить памяти под подстроку? Ответ - ХЗ, потому что длина подстроки никому не известна, Pascal-строки мы не рассматриваем. Следовательно - длину подстроки нужно определить.
Back to top
View user's profile Send private message
046
Apprentice
Apprentice


Joined: 21 Jul 2004
Posts: 231
Location: Yaroslavl, Russia

PostPosted: Fri Mar 17, 2006 2:18 pm    Post subject: Reply with quote

Да всё известно, вот пример.
3 строки.
источник, из которого извлекается подстрока
начало построки
конец подстроки

Все нормальные функции поиска вернут адрес. Тк это обоспечивает удобный и прямой доступ к искомому элементу. (раз уж мы говорим про язык C)

После определения адресов начала и конца - вычитаем из конца начало - это и есть размер занимаемой подстрокой памяти.
Back to top
View user's profile Send private message
Koshh
n00b
n00b


Joined: 03 Mar 2006
Posts: 32

PostPosted: Fri Mar 17, 2006 2:55 pm    Post subject: Reply with quote

046 wrote:
Да всё известно, вот пример.
3 строки.
источник, из которого извлекается подстрока
начало построки
конец подстроки

Все нормальные функции поиска вернут адрес. Тк это обоспечивает удобный и прямой доступ к искомому элементу. (раз уж мы говорим про язык C)

После определения адресов начала и конца - вычитаем из конца начало - это и есть размер занимаемой подстрокой памяти.

Еще раз - конец подстроки обычно никем не возвращается. http://www.cplusplus.com/ref/cstring/strstr.html - где тут конец подстроки? Можешь и другие функции поглядеть ради интереса - либо позиция, либо адрес...

Ладно, С будем считать устаревшим. Что у нас там еще? Паскаль? Так он, это, давно уже никому не нужен. А все новомодные C#, VB, PHP, Perl и иже с ними про адреса НИЧЕГО не знают. Зато умножать умеют очень неплохо.
Back to top
View user's profile Send private message
Balancer
Guru
Guru


Joined: 04 Jun 2004
Posts: 465

PostPosted: Fri Mar 17, 2006 7:57 pm    Post subject: Reply with quote

Народ, у вас башню сорвало. Даже если бы строки с символами переменной длины отнимали времени на вырезку подстрок на два порядка больше, всё равно, в рамках любого реального процесса эта операция занимает столь небольшой процент, что на общем быстродействии оно не скажется.

Реально же, при правильных методах анализа, потери быстродействия совершенно смешные. Ибо для каждого символа в UTF-8 его длина сразу определяется старшими битами.

Что имеем: определение длины Cи-строк практически не тормозит. Что в однобайтовых, что в UTF-8 строках нужно тупо сканировать всю строку в поисках нуля. Только в одном случае байт инкрементим, в другом - прибавляем вычисленную константу. (Кстати, хинт: scasb не прокатит, ибо он выполняется медленнее, чем inc/cmp/jnz аж со времён 80486!).

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

Вырезание подстроки займёт больше времени, но даже на фоне задач выделения памяти под вырезку это будет совершенно микроскопическая потеря. По паре тактов на каждый символ до начала вырезки - смешно.
Back to top
View user's profile Send private message
Koshh
n00b
n00b


Joined: 03 Mar 2006
Posts: 32

PostPosted: Fri Mar 17, 2006 8:48 pm    Post subject: Reply with quote

Balancer wrote:
Кстати, хинт: scasb не прокатит, ибо он выполняется медленнее, чем inc/cmp/jnz аж со времён 80486!

Да никт ои не соприт, данные инструкции я привел для историчекой справки. Можно еще учитвать спариваеомсть команд, и иже с ним - да здравствуют сохраненные такты =)

Если же чуть более сурьезно, то я все же прав, производительность с UTF8, пусть и на 0.5%, но меньше, чем при постоянном размере символа. А реально... Я вот на C# серверные приложения пишу - и меня вполне устраивает код, который JIT-компилятор ваяет из IL - с оптимизацией там все в порядке ;-)
Back to top
View user's profile Send private message
lefsha
Veteran
Veteran


Joined: 30 Aug 2004
Posts: 1234
Location: Burgas, Bulgaria

PostPosted: Fri Mar 17, 2006 11:16 pm    Post subject: Reply with quote

Koshh wrote:
Что жекасается MC, то проблема заключается не возрасте или глючности программы, а в том, что программа, замечательно работающая с одними настройками ОС, при переходе на более новые (и прогрессивные) работать отказывается.


Что мне делать, если у меня работает?

Koshh wrote:

То есть KOI8 и UTF-8 вещи взаимосключаемые в линухе


Разумеется. И слава богу что это так!
Не хватало мне тут еще зоопарка.

Все что касается документов в KOI8 под UTF-8 проблем не замечено.
Что интернет, что почта, что тексты.

Проблем нет как нет.
_________________
Lefsha
Back to top
View user's profile Send private message
lefsha
Veteran
Veteran


Joined: 30 Aug 2004
Posts: 1234
Location: Burgas, Bulgaria

PostPosted: Fri Mar 17, 2006 11:28 pm    Post subject: Re: Нужен нормальный текстовый ре Reply with quote

Koshh wrote:

В винде вимвол == 2 байтам.


Иначе говоря Вы подтверждаете проблему товарища с CD
и кривизну поддержки языков в windows?

Нельзя так подставляться. Тут могут и наказать...
_________________
Lefsha
Back to top
View user's profile Send private message
lefsha
Veteran
Veteran


Joined: 30 Aug 2004
Posts: 1234
Location: Burgas, Bulgaria

PostPosted: Fri Mar 17, 2006 11:32 pm    Post subject: Re: Нужен нормальный текстовый ре Reply with quote

046 wrote:
Koshh wrote:
В винде вимвол == 2 байтам.
Китайцы, корейцы, вместе с инженерами, физиками и математиками шутку оценили :)


:roll:

Заметил Ваш ответ позже...
_________________
Lefsha


Last edited by lefsha on Fri Mar 17, 2006 11:44 pm; edited 1 time in total
Back to top
View user's profile Send private message
lefsha
Veteran
Veteran


Joined: 30 Aug 2004
Posts: 1234
Location: Burgas, Bulgaria

PostPosted: Fri Mar 17, 2006 11:40 pm    Post subject: Reply with quote

Koshh wrote:
046 wrote:
strlen("AAФ")

Браво! Только в данном случае мы знаем еще и длину подстроки в символах (без этого знания само понятие подстроки не имеет смысла). Таким образом, можно либо послать strlen искать конец строки, либо умножить количество символов в подстроке на размер символа и получить ответ =) Разницу ощущаешь?


Сэр Вы конечно открыли этот топик, который больше не топик.
Но пожалуйста не надо играть из себя непонятливого,
а то ведь правда можно подумать, что до Вас не доходит,
что Вам говорят!

Уважаемый Koshh я бы предложил Вам посидеть и подумать над тем,
что Вам тут говорили. И потом, когда наконец сообразите, тогда
и напишите свои ощущения. Договорились?
_________________
Lefsha
Back to top
View user's profile Send private message
Koshh
n00b
n00b


Joined: 03 Mar 2006
Posts: 32

PostPosted: Sat Mar 18, 2006 2:03 pm    Post subject: Reply with quote

lefsha wrote:

Сэр Вы конечно открыли этот топик, который больше не топик.
Но пожалуйста не надо играть из себя непонятливого,
а то ведь правда можно подумать, что до Вас не доходит,
что Вам говорят!

Уважаемый Koshh я бы предложил Вам посидеть и подумать над тем,
что Вам тут говорили. И потом, когда наконец сообразите, тогда
и напишите свои ощущения. Договорились?

О-о, явление ефрейтора - правда, пока еще не модератора. Знаешь, мне кажется, на каждом форуме живут такие, как ты - они ничего не хотят обсуждать, им неинтересно просто беседовать, обмениваться мнениями. Их смысл жизни - указывать всем вокруг, как себя вести, о чем нужно говорить, а о чем - нет, и когда "пора закрывать топик". Эти существа могут отличаются никами, местом проживания, возрастом (иногда и полом) - но поведение остается неизменным всегда.

"Вы" - обязательно с большой буквы, словно это карикатура на вежливость может кого-то обмануть. Использование слова "уважаемый" как ругательства ("уважаемый, а чего это вы тут забыли?"). Непонятно чем подтвержденное желание говорить за всех - "нормальных людей", "здравомыслящих", "посетителей этого форума". Фразы вроде "не надо играть из себя непонятливого", "И потом, когда наконец сообразите", несущие исключительно одну цель - унизить собеседника, и показать собвственную "крутость". Стиль типичного люмпена.

Так вот, мы с тобой ни о чем догавариваться не будем. Можешь хоть наизнанку выворачиваться, звать модераторов, владельцев ресурса, писать жалобы провайдеру, приносить жертвы Первопингвину - твое мнение так и останется мнением озлобленного форумного люмпена.

ЗЫ Старикан Голубицкий был тысячу раз прав, описывая подобных гоблинов
Back to top
View user's profile Send private message
lefsha
Veteran
Veteran


Joined: 30 Aug 2004
Posts: 1234
Location: Burgas, Bulgaria

PostPosted: Sat Mar 18, 2006 2:18 pm    Post subject: Reply with quote

Мда... все гораздо хуже чем я предполагал.

Я Вам отвечал по теме вашего спора с 046, но Вас кажется захлестнули
эмоции и Вы вообще отказались думать...

Предлагаю все таки успокоится и еще раз внимательно почитать,
что Вам писал 046. Его слова не лишены смысла, проверьте это
с карандашом в руке.
_________________
Lefsha
Back to top
View user's profile Send private message
046
Apprentice
Apprentice


Joined: 21 Jul 2004
Posts: 231
Location: Yaroslavl, Russia

PostPosted: Mon Mar 20, 2006 8:18 am    Post subject: Reply with quote

Koshh wrote:
Еще раз - конец подстроки обычно никем не возвращается. http://www.cplusplus.com/ref/cstring/strstr.html - где тут конец подстроки? Можешь и другие функции поглядеть ради интереса - либо позиция, либо адрес...
А откуда библиотека знает где конец подстроки? Ты сам должено его определить, тк только программа знает структуру данных. А конец ищется также как и начало. Получаем адреса начала и конца. А всё что между - подстрока.

Или ты всё-таки считаешь функцией подстроки получение символа (или диапазона) по позиции(ям)? Так ты сам выше согласился что это редкая операция!!
Koshh wrote:
А все новомодные C#, VB, PHP, Perl и иже с ними про адреса НИЧЕГО не знают. Зато умножать умеют очень неплохо.

В них и строки - встроенный тип. И работа со строками как массивами символов крайне не рекомендуется. (в последних двух, про первые ничего писать не буду). Ничего не знают про адреса программисты на этих языках. А реализация поиска и другие операции будь уверен их активно использует, и скорее всего обходится без умножения.
Back to top
View user's profile Send private message
046
Apprentice
Apprentice


Joined: 21 Jul 2004
Posts: 231
Location: Yaroslavl, Russia

PostPosted: Mon Mar 20, 2006 8:31 am    Post subject: Reply with quote

Koshh wrote:
Если же чуть более сурьезно, то я все же прав, производительность с UTF8, пусть и на 0.5%, но меньше, чем при постоянном размере символа.
Если серьёзно - трудоёмкость имеет смысл только в отношении операций. utf-8 не операция. "На 0,5% меньше" не может быть серьёзным утверждением (как и Ваша правда), так как это просто бессмысленное утверждение.

Операции обьединения, поиска, замены в utf-8 имеют РАВНУЮ трудоёмкость по сравнению с кодировками с постоянным числом байт.
Back to top
View user's profile Send private message
Laitr Keiows
Bodhisattva
Bodhisattva


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Fri Jun 02, 2006 5:51 am    Post subject: Re: Нужен нормальный текстовый ре Reply with quote

Koshh wrote:
sa10 wrote:
Или юникод в винде, не юникод вовсе?

Приведи пожалуйста конкретный пример про иероглифы, хватит уже пустой болтовни "в линуксе все супер, в винде плохо". Конкретный пример, с конкретной версией винды и дистрибутива (хотя здесь уже сложнее) линуха. Твои "подозрения" по поводу китайской винды беспочвенны, в локализованных версиях виндовс ядро неизменно, меняется только UI.


В японской винде вместо слеша везде отображается знак иены:
C:¥WINNT¥system32¥drivers¥
Back to top
View user's profile Send private message
Koshh
n00b
n00b


Joined: 03 Mar 2006
Posts: 32

PostPosted: Fri Jun 02, 2006 5:58 am    Post subject: Reply with quote

"У меня винда виснет" - твое сообщение по смыслу не отличается от этого =) Версия винды, сервиспаки - где? Я тоже могу иену вместо слеша себе сделать - не вопрос. Поэтому, неплохо было бы написать, оно с "рождения" у тебя так отображается, или нет? И что значит "везде" ? Слеш не набирается с клавиатуры принуипиально, или после набора магическим образом трансформируется в денюжку? )

И только после этого можно более менее что-то сказать по поводу собссно проблемы.
Back to top
View user's profile Send private message
Laitr Keiows
Bodhisattva
Bodhisattva


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Fri Jun 02, 2006 6:01 am    Post subject: Reply with quote

Koshh wrote:
Я тоже могу иену вместо слеша себе сделать - не вопрос. Поэтому, неплохо было бы написать, оно с "рождения" у тебя так отображается, или нет? И что значит "везде" ? Слеш не набирается с клавиатуры принуипиально, или после набора магическим образом трансформируется в денюжку?

1) C рождения.
2) Везде слеши видны ввиде знака иены. При наборе точно так же.
Back to top
View user's profile Send private message
Koshh
n00b
n00b


Joined: 03 Mar 2006
Posts: 32

PostPosted: Fri Jun 02, 2006 6:06 am    Post subject: Reply with quote

У тебя виндовс 95 или 98? Если другой - не сочти за труд все же указать версию.

Также хотелось бы узнать о региональных настройках винды (странно да - в винде тоже что-то надо настраивать=))) ) - значение имеют все 3 закладочки )
Back to top
View user's profile Send private message
Laitr Keiows
Bodhisattva
Bodhisattva


Joined: 04 Jul 2005
Posts: 891
Location: Kobe, Japan

PostPosted: Fri Jun 02, 2006 6:26 am    Post subject: Reply with quote

Koshh wrote:
У тебя виндовс 95 или 98? Если другой - не сочти за труд все же указать версию.

Также хотелось бы узнать о региональных настройках винды (странно да - в винде тоже что-то надо настраивать=))) ) - значение имеют все 3 закладочки )

Винда ХР, в настройках везде японский.
Выглядит все так: http://www.crosslanguage.co.jp/support/jx9/image/02-3_img01.jpg
Back to top
View user's profile Send private message
Koshh
n00b
n00b


Joined: 03 Mar 2006
Posts: 32

PostPosted: Fri Jun 02, 2006 6:38 am    Post subject: Reply with quote

Ну тогда "хз" =) Тем не менее - простой вопрос - а вообще слеши в системе отображаются? charmap, notepad, IE - что показывают они? Особенно интересно выглядит идея посмотреть слеш разными системными шрифтами.

Могу сказать например, что русская версия винды, при установке "хитрых" региональных настроект продолжает использовать в качестве основных шрифтов (проводник, окошки) "облегченные" шрифты, в которых просто нет кучи иероглифов. Приходится "ручками" прописывать Ариал Юникод куда нужно (повторяю - относится к изначально русской версии) =)
Back to top
View user's profile Send private message
dasV
n00b
n00b


Joined: 24 Jul 2005
Posts: 50

PostPosted: Sat Jun 03, 2006 7:51 pm    Post subject: Reply with quote

А что камрады? Как текстовый редактор нашли? А то я через дебри ваших ..гм…программистских загогулин так и не понял, что человек то выбрал? То ли оОо то ли ЛаТеХ то ли вообще MS.

Вообще уважаемые, как я понял, товарищ просто решил пофлемить. Странно, что все повелись =(

С уважением das
Back to top
View user's profile Send private message
dragn
n00b
n00b


Joined: 12 Sep 2005
Posts: 19
Location: mipt

PostPosted: Sun Jun 04, 2006 9:29 am    Post subject: Reply with quote

lefsha wrote:
fedukoff wrote:
Вкуснее нету (зачем?).


НЕ ПОРТИТЕ, ПОЖАЛУЙСТА, РУССКИЙ ЯЗЫК.

слово ВКУСНО и его производные употребляются ТОЛЬКО в связи с пищей.

Не учитесь у идиотов, которые плохо учились в школе.


:lol: хахаха!! вы это нашей семинаристке по матанализу скажите!!... =))))

(извините за оффтоп, не смог удержаться..))
_________________
ÎÁÞÉÎÁÀÝÉÊ ÇÅÎÔÏ×ÏÄ
Back to top
View user's profile Send private message
4le
Tux's lil' helper
Tux's lil' helper


Joined: 17 Feb 2005
Posts: 96
Location: СПб

PostPosted: Sun Jun 04, 2006 4:41 pm    Post subject: Re: Нужен нормальный текстовый ре Reply with quote

Laitr Keiows wrote:
Koshh wrote:
sa10 wrote:
Или юникод в винде, не юникод вовсе?

Приведи пожалуйста конкретный пример про иероглифы, хватит уже пустой болтовни "в линуксе все супер, в винде плохо". Конкретный пример, с конкретной версией винды и дистрибутива (хотя здесь уже сложнее) линуха. Твои "подозрения" по поводу китайской винды беспочвенны, в локализованных версиях виндовс ядро неизменно, меняется только UI.


В японской винде вместо слеша везде отображается знак иены:
C:¥WINNT¥system32¥drivers¥


Это не бага, это бай дизайн.
Back to top
View user's profile Send private message
4le
Tux's lil' helper
Tux's lil' helper


Joined: 17 Feb 2005
Posts: 96
Location: СПб

PostPosted: Sun Jun 04, 2006 5:07 pm    Post subject: Reply with quote

Koshh wrote:
046 wrote:

[кусь]
После определения адресов начала и конца - вычитаем из конца начало - это и есть размер занимаемой подстрокой памяти.

Еще раз - конец подстроки обычно никем не возвращается. http://www.cplusplus.com/ref/cstring/strstr.html - где тут конец подстроки? Можешь и другие функции поглядеть ради интереса - либо позиция, либо адрес...
[кусь]

Кажется я понял причину недопонимания.
Ты, видимо, говоришь о подстроках, заданных как литеральные константы.
Только в этом случае есть альтернатива ::strlen() / string::size() - sizeof().
Т.е. определение их длин происходит на этапе компиляции.
Во всех остальных случаях тебе придётся вычислять длину строки в рантайме.
Т.о. значимое падение перформанса будет иметь место только в случае определения длины строкового литерала.
Очевидно, что длина константной строки тоже является константой. Следовательно достаточно столько раз вызвать strlen, сколько определено константных строк.
Учитывая, что действительно большие количества константных строк, как правило, выносятся в ресурсные файлы,
в реальной программе число литеральных константных строк пренебрежительно мало.
Т.о. сколько-нибудь заметного падения производительности из-за "проблемы конца подстроки в utf-8" не будет.

Каково, а?
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Goto page Previous  1, 2, 3, 4
Page 4 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum