| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Оптимизация манипуляций со строками |
| Автор: Гость_Игорь 4.5.2005, 23:34 | ||||
| Хело эврибади! Мое приложение записывает свои действия в лог файл вот таким способом:
Logger.GetNext - это мой класс (наследованный от TStringList) который просто возвращает следующую строку. Но вопрос не в нем. Собственно меня смущает вот этот код:
Допустимо ли в Делфи складывать строки таким образом??? (Если б я написал такое на Java то меня б сразу уволили.) Порылся в хелпе - нашел тока такую функцию function Concat(s1 [, s2,..., sn]: string): string; Будет ли правильней использовать ее вместо простого сложения? Подскажите какие еще есть правильные методы работы со строками в Делфи. Есть ли для этого спец. функции\классы ? Было б здорово почитать на эту тему какую-нить умную статью. Заранее спасибо. |
| Автор: Snowy 4.5.2005, 23:45 | ||
| Не вижу здесь ничего приступного. Так и должно быть. компилятор выполняет сложение в один проход. Delphi сама выполнит оптимизацию по ходу компиляции. Concat в данном случае ничего ни прибавит. [add] Поправочка. Concat не только не добавит. Вот длянул в хелпе:
Так что его присутствие обусловлено только совместимостью с другими версиями. По сути он даже медленнее. |
| Автор: Yanis 5.5.2005, 17:01 | ||||
В модуле SysUtils много полезных функций для работы со строками. К стати, в работе со строками можно использовать относительные операторы (=, <>, <, >, <=, >=). А вот тут небольшой faq: http://www.atrussk.ru/delphi/5/string/faqstr.htm
|
| Автор: Snowy 5.5.2005, 21:51 |
| Видимо в Java все складывания обрабатываются поочереди. Сколько складываний строк, столько и операций. Дельфя же заранее распределяет память под строку и все сразу туда спихивает, независимо от количества операций по тексту. |
| Автор: Yanis 5.5.2005, 23:04 |
| Ясно. Спасибо. |
| Автор: Гость_Игорь 6.5.2005, 18:19 |
| Спасибо за FAQ ЗЫ Насчет сложения строк в Яве - то для этого есть спец. класс StringBuffer Явное же складывание строк ведет к нерациональному расходу памяти, нерациональному же P-коду (строки кстати компилятся в StringBuffer - я проверял) и, как утверждают некоторые гуру, к memory leak При приеме на работу в какую-нить более менее солидную контору при собеседовании первым же вопросом (ну или вторым) является вопрос про сложение строк. Таким образом они думают, что отсеивают лохов. |
| Автор: Yanis 9.5.2005, 20:18 | ||
Теперь понятно. |