![]() |
|
|
![]()
|
|
| Stecya |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 29.5.2007 Репутация: нет Всего: нет |
можно как нибуть одним махом найти росположение 2-3 разних символов .... цикл просьба не предлогать ибо очень долго (для 30 000 букв)
|
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 1 Всего: 92 |
Stecya, в любом случае это будет цикл, даже если это будет какая то стандартная функция, то внутри у нее будет цикл.
Исключение - если данные предварительно хешированы. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
хи-хи-хи напугал -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Stecya |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 29.5.2007 Репутация: нет Всего: нет |
Ок тогда как можна оптимизировать етот код
где red_Text переменная типу TRichEdit .... CоlorItem раскрашиваєт текст между символами "{", "}" в зависимости от значения level .... для текста длиною 30 000 символов прога работает почти 2 минути Это сообщение отредактировал(а) Stecya - 27.6.2007, 16:10 |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
У вас условие два раза идет. Сначало пробивает один символ и тут же следующий. Оператор else тебе знаком? Да и красить каждый символ не слишком удобно... Немного упростил, через Pos работает лучше, но почему-то не до конца документ читает, позже и сним разберусь, а пока, попробуй этот код:
У меня 30 000 символов (забитого скобками) читало примерно секунд 20 при 3,2 гц проца. Проверьте этот у себя и скажите, что у вас, дальше буду думать с Pos. ps. о том как измерить время действия функций прочитайте в FAQ -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
вот комбинированный вариант - 17 секунд. За счет уничтожения одного условия:
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Stecya |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 29.5.2007 Репутация: нет Всего: нет |
на таком тексте( http://spectral.clan.su/_fr/1/30452506.txt ) вашим кодом прога работаєт 10,1 секунд (Celeron 2.0 Ггц)
но функциональность немножко не та ...привожу свой код
Функция ColorItem
Такой код работает 19,6 сек. ..... мне нужно штоб укладивалось в 7-8 секунди P.S. Если заменить switch на іf поднимет ли ето бистродействие? Это сообщение отредактировал(а) Stecya - 27.6.2007, 20:35 |
||||
|
|||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Мало вероятно, но можно вообще его не использовать в моем варианте №2. Но в функции ColorItem можно swicth ваше убрать, просто в level записывать цвет, тогда производительность улучшиться, но имхо много хотите, можно побробовать разгрузить код или подумать над кешированием...
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Stecya |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 29.5.2007 Репутация: нет Всего: нет |
Хочу не я а потенциальний роботодатель .... помогите пожалуста
Добавлено @ 20:47 Заменил switch на іf .... теперь 13 сек.
Не могу я вместо левела цвет передать потомушто не знаю на каком уровне нахожусь в момент визова ColorItem Это сообщение отредактировал(а) Stecya - 27.6.2007, 20:50 |
|||
|
||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Постараюсь помочь... Стоп, ты же писал 2 секунды? В принципе, как я и говорил 5 условий... switch пожалуй можно назвать условием с разделениями. Хотя 3 секунды разницы? Else использовали?
Нет можите, скажем создать массив типа TColor и переменная level будет указывать на индекс цвета. Т.е. освободим программу, от необходимости думать в этом месте. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
| Stecya |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 29.5.2007 Репутация: нет Всего: нет |
Cорь ... я перепутал тести ... 2 секунди ето для 2000 символов .... Кстати проблема решилась .... Очень много времени занимает такое обращение
Перевел ето дело в сhar и дострупаюсь через указатель .... итого бистродействие проги упало с 13 сек до 2 сек Попробую еще масив TColor сделать может еще бистрее будет .... Р.S. Спосибо большое што не остался равнодушним к чужой проблеме P.S.S. Правда на етом проект не закончен ... думаю я еще наделаю тут много топиков))) |
||||
|
|||||
| Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Всегда рад помочь
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |