![]() |
|
Модераторы: Akina |
![]()
|
|
| ProgramerForever |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
У меня часто возникае такая задача: в программе крутится большой цикл, и нужно внутри цикла аккумулировать данные в строковой переменной.
Но такой подход неправильный: код работает крайне медленно. Особенно когда строка разрастается в размерах. Когда-то где-то (=ОБС) я читал. что оператор "&" работает быстрее, чем "+"
Как оказалось - нет. А правильнее в таком случае использовать mid(). Делается так (взято с MS):
Как оказалось, можно ускорить код, применяя строки фиксированной длины. Чтобы оценить скорость работы, написал небольшой код (достаточно просто вставить в новый проект):
Результат:
Надеюсь это кому-нибудь будет полезно. С этого момента буду повсеместно юзать mid() и фиксированные строки. Это сообщение отредактировал(а) ProgramerForever - 14.5.2010, 11:48 |
||||||||||
|
|||||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Попробуй ещё сравнить скорость работы на динамических и на фиксированных строках...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ProgramerForever |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
На фиксированных строках работает быстрее. Правда смысла нет использовать фиксированные строке без mid(), т.к.
ничего не изменит, т.к. "лишние" символы проигнорируются. А если в цикле делать наоборот:
то данные будут накапливаться шиворот-навыворот: "987654321_" Изменил код в первом посте, чтобы не плодить сущности. |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Я вообще-то предполагал, что ты будешь использовать ПРОЦЕДУРУ mid()
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ProgramerForever |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: 2 Всего: 5 |
Ээ.. Так и делаю:
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
а, пардон... посмотрел код конкатенации и замечание насчёт конкатенации в начало, а собсно тест-код проглядел.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |