| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Помогите отимизировать код небольшой функции |
| Автор: ДЫМ 28.6.2006, 22:37 | ||
| Функция нужна для сортировки строк со смешанными данными (символы и числа). http://forum.vingrad.ru/index.php?showtopic=101816 Код делает следующее: встречающиеся в строке числа добивает нулями слева, чтобы они были одной разрядности, например: fcGetFormattedString('Строка12Строка5', 5) возвращает строку: Строка00012Строка00005
Вопрос вот в чем: можно ли как-то оптимизировать код, мне он представляется немного корявым и медленным. |
| Автор: Palladin 28.6.2006, 23:34 |
| Да нет, вроде всё нормально |
| Автор: Yanis 28.6.2006, 23:46 | ||
| ДЫМ Голова уже не варит. Завтра гляну.... Но код имхо не идеальный.
|
| Автор: Bose 29.6.2006, 14:50 | ||||||||||
разве что заменить
на
и вместо:
писать
и ещё, как вариант, добавить var ch:byte; ch:=sStr[i]; и заменить все обращения к sStr[i] на обращения к ch Время исполнения 1 000 000 итераций из 3х строк у меня было такое: Original 1000 000 iter 0:00:19:547 My 100 0000 iter 0:00:19:422 Тестовые цикл был такой:
процедура MeasureTime моя, она запоминает текущий GetTickCount и возвращает разницу между предыдушим запомненным значением и текущим. |
| Автор: Alexeis 29.6.2006, 15:34 | ||
Быстрее я не смог придумать
Добавлено @ 15:38 Мининимальное количество операций выделения памяти 2 прохода по строке "делфийских" и 2 "ассемблерных" |
| Автор: Bose 29.6.2006, 16:34 | ||
alexeis1, выигрыш в 17 секунд по сравнению с моим вариантом. держи + за мастер-класс |
| Автор: ДЫМ 1.7.2006, 00:03 |
| Всем спасибо, alexeis1 особенно. |