![]() |
|
Модераторы: THandle, bems |
![]()
|
|
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Принцип какой? Оставить в выходной строке только цифры и символ, который находится в параметре Ignore |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
Akella, что-то не понял что нужно оптимизировать в данном коде... На выход у тебя идут все символы-числа + символы равные символу Ignore... Я бы изменил до такого вида:
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Я хочу оптимизировать не с точки зрения кода, а с точки зрения времени выполнения самой функции. Чтобы "отсеивание" левых символов выполнялось быстрее.
Это сообщение отредактировал(а) Akella - 3.12.2009, 17:10 |
|||
|
||||
| Beltar |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: нет Всего: 7 |
Не сочтите невежливым, но есть такой рекомендуемый чит, как передача не меняющихся в процедуре строк, как констант, что впрочем уже предложил THandle.
А оно диких перераспределений памяти не создает? Мне кажется, что само вхождение в множество провереряется быстрее всех строковых операций.
А Length не в каждой итерации вычисляется? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||
|
|||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
||||
|
||||
| THandle |
|
||||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
Да, именно так и есть Думаю лучше выделить в начале большой кусок памяти, а в конце ненужное обрезать. Что то вроде:
Тут присвоение будет вызываться только UniqueStringA вместо всех тех перераспределений памяти, которые были раньше. В принципе можно сделать быстрее. |
||||
|
|||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 2 Всего: 88 |
Akella, проверка вхождения символа в множество это плохо начиная с появления нативного уникода. Нужно в любом случае заменить.
-------------------- Обижено школьников: 8 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
И что же может быть быстрее?
У меня D2007, я не использую юникод. |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Добро пожаловать в форум группы "Delphi". В разделе разрешается:
Строго запрещено:
Если Вам понравилась атмосфера форума, заходите к нам чаще! Люблю, целую, вечно Ваш, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Форум группы: delphi | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |