Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#91: 2010-04-22 17:31:51 ЛС | профиль | цитата
nesco писал(а):
Ты что, его часто ищешь То что ты проверял, в реальной жизни имеет очень маленькую вероятность.
Это ты уже разводишь "демагогию".
В реальной жизни все может быть.
А вообще-то нужно было проверить от 1-го символа до 255-и.
Но и так ясно, что поиск SubStr разной длины при применении NewPosEx занимает почти одно и тоже время (разница мизер ), чего не скажешь о других методах.
Так что я остаюсь при своем мнении. Извини.
Надеюсь, что и Dilma понравится именно Asm-вариант

Насчет
nesco писал(а):
с применением самопального asm кода
а какой код не самопальный ? Все коды самопальные.
------------ Дoбавленo в 17.31:
Да и помоему ASM - пофиг кодировки.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26200
Рейтинг: 2137
#92: 2010-04-22 17:44:59 ЛС | профиль | цитата
Tadd, а у меня asm код показывает отвратительный пезультат. Не забывай и о разных машинах -- у тебя AMD, а у меня Intel



Еще вопросы есть
------------ Дoбавленo в 17.44:
Увеличение быстродействия кода asm ощущается только на длине строки до 2-х символов, дальше он идет в отставание. Зафиг такой ущербный код, что ты будешь делать -- искать стабильно один символ, или, все же, строку, минимум, из двух символов, где скорость кодов соизмерима. Средняя скорость всегда будет выше при разной длине поисковых строк, это и ежу ясно, вот только тебе, почему-то, совсем это не ясно


карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#93: 2010-04-22 18:08:25 ЛС | профиль | цитата
Tad писал(а):
понравится именно Asm-вариант

безусловно

nesco писал(а):
Не забывай и о разных машинах -- у тебя AMD, а у меня Intel

а при чем тут это?

PS: между словом - по хорошему asm версию PosEx можно еще больше ускорить, если вставить отдельные реализации поискового алгоритма при длине искомой строки в 1, 2, 4 и 8 символов. Так если на 64х разрядной ос искать вхождение 8ми символьной подстроки, то можно ограничиться всего одним циклом со всего одной командой сравнения двух 64х битных операндов.
карма: 27
0
Разработчик
Ответов: 26200
Рейтинг: 2137
#94: 2010-04-22 18:20:35 ЛС | профиль | цитата
Dilma писал(а):
безусловно

И почему так категорично
Почему именно безусловно Примененный asm алгоритм не является оптимальным, так и написано там, откуда я его взял. Это видно и по тестовым результатам. Или у вас свои тестовые предпочтения
Dilma писал(а):
а при чем тут это?

Да притом, что некоторые процессорные операции выпоняются по-разному на разных машинах с разными процессорами и разной архитектурой, или это новость По результату тестов это прекрасно видно

С оптимизауией под кратные строки я согласен, это даст прирост производительности
карма: 22

0
файлы: 3test_02.png [15.3KB] [418], test_03.png [12.7KB] [407], test_04.png [12.9KB] [425]
Главный модератор
Ответов: 2999
Рейтинг: 396
#95: 2010-04-22 20:39:46 ЛС | профиль | цитата
Может стоит в компонент Project свойство добавить, которое будет условной трансляцией выбирать метод поиска?
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 16884
Рейтинг: 1239
#96: 2010-04-22 21:28:08 ЛС | профиль | цитата
nesco писал(а):
это даст прирост производительности
ну насчет производительности, помоему, лишняя цель.
"Чистим" функцию. Оставляем только, например:

function PosEx2(const  SubStr,S: string; Offset: integer = 1): integer;
begin

end;

и получаем на длинной строке время ~220 мс.

Это ни о чем не говорит ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26200
Рейтинг: 2137
#97: 2010-04-22 21:32:17 ЛС | профиль | цитата
Tad писал(а):
"Чистим" функцию. Оставляем только

И что ты тут почистил, я в упор не вижу
Tad писал(а):
и получаем на длинной строке время ~220 мс

С чего получаем, не вижу кода, который дает такой результат
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#98: 2010-04-22 22:02:23 ЛС | профиль | цитата
Телереклама писал(а):
А вы попробуйте
nesco писал(а):
С чего получаем, не вижу кода,
именно кода нет, а время есть.
Вот эта строчка требует 220 мс.

_hi_onEvent(onPos,PosEx2(ToStringEvent(SubStr),ToStringEvent(Str),5));
А оставшиеся 100- 130 мс (от общего времени) тратятся на работу функции.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8938
Рейтинг: 824
#99: 2010-04-23 13:03:23 ЛС | профиль | цитата
nesco, у меня нет текстового файла под 100 Мб для проверки ваших опусов, но есть HiAsm code_17911.txt
карма: 19

0
файлы: 1code_17911.txt [7.9KB] [390]
Разработчик
Ответов: 26200
Рейтинг: 2137
#100: 2010-04-23 13:15:18 ЛС | профиль | цитата
Леонид писал(а):
у меня нет текстового файла под 100 Мб

Его тут выкладывали, он всего 6 Mb весит упакованный
Леонид, ну вот скажи, к чему ты это выложил, ну никто и не сомневался, что ты знаешь HiAsm, вопрос-то совсем в другом был
Леонид писал(а):
для проверки ваших опусов

Вот не сыпал бы ты соль на рану, и так тошно, столько времени угрохал впустую, хоть, и в отпуске

карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#101: 2010-04-23 13:30:00 ЛС | профиль | цитата
nesco писал(а):
Да притом, что некоторые процессорные операции выпоняются по-разному на разных машинах с разными процессорами и разной архитектурой, или это новость

да, новость. Даже две - не знал, что команды процессора могут исполняться на разных архитектурах... всегда полагал, что архитектура как раз и определяет набор поддерживаемых команд, а не наоборот. Не знал так же и то, что производители плюют на даташиты по командам той архитектуры, под которую они делают проц, где как раз и написано, что команда должна делать и за сколько тактов
Ну и к слову - любой яву код компилируется в те же самые команды процессора, с которыми вроде ни у amd, ни у intel описанных выше проблем нет. Или в другие все же?
карма: 27
0
Разработчик
Ответов: 26200
Рейтинг: 2137
#102: 2010-04-23 13:53:15 ЛС | профиль | цитата
Dilma писал(а):
любой яву код компилируется в те же самые команды процессора, с которыми вроде ни у amd, ни у intel описанных выше проблем нет

Прикол не в командах, а в разных подходах к исполнению этих команд внутри проца. AMD всегда выполнял регистровые операции быстрее Intel, за счет особенности архитектуры. А в даташитах всегда указывают нижний предел скорости выполнения инструкции, и никто не пойдет на то, чтобы ограничивать скорость, если удалось ее поднять за счет разных ухищрений, в том числе, и из-за особенности архитектуры
карма: 22

0
Ответов: 8938
Рейтинг: 824
#103: 2010-04-23 14:13:28 ЛС | профиль | цитата
nesco, время "ухлопано" совсем не впустую, драгоценный олыт для себя и для всех нас, спасибо!
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#104: 2010-04-23 17:23:30 ЛС | профиль | цитата
Леонид писал(а):
у меня нет текстового файла под 100 Мб для проверки ваших опусов, но есть HiAsm
Спора нет - иметь HiAsm - дело хорошее.

Леонид, вопрос:
Зачем нужны окна задания размеров слов в Вашем опусе (от и до)


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8938
Рейтинг: 824
#105: 2010-04-23 18:55:14 ЛС | профиль | цитата
Tad, для похожести текста на литературное произведение
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)