FreeBasic
Главная
Вход
Регистрация
Четверг, 13.12.2018, 20:58Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Вопросы по языку FreeBasic » Как сформировать длинную строку?
Как сформировать длинную строку?
vic7tarДата: Четверг, 18.01.2018, 00:45 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 11
Репутация: 0
Статус: Offline
Всем привет.
Для тестирования понадобилась длинная строка. Сваял вот такое:

Код
Function shaping_str(ByRef m_repeat As long, ByRef m_max_literals As Long, ByRef m_max_spases As Long) As String
' m_repeat - число повторов
' m_max_literals - max длина подстроки
' m_max_spases - max длина промежуточных пробелов
Dim m_output_str As String
Dim As Long i
  Randomize
  m_output_str = ""
  for i=1 to m_repeat
      m_output_str = m_output_str + string(int(1 + m_max_literals*Rnd()),"o") + space(int(1 + m_max_spases*Rnd()))
  Next       
  Return m_output_str+"|"
End Function
 . . .
src = shaping_str(1000000,20,10)
 Ну уж очень долго получается. Подскажите, как кардинально это можно поменять.
Заранее спасибо.
 
AlecsisДата: Понедельник, 29.01.2018, 00:29 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
Привет!
Если в цикле избавиться от наращивания выходной строки через операцию "+", т.е. от конструкции
m_output_str = m_output_str + [довесок из символов с пробелами]
то скорость увеличится не в разы, а на порядки…
---------------------------------------------
PS что-то не догоняю, приложились ли файлы… surprised
на всякий случай ссылка на яндекс-диск, там 2 варианта исходников + протоколы запусков:
https://yadi.sk/d/1pR1rKlD3Rs5rq


Сообщение отредактировал Alecsis - Понедельник, 29.01.2018, 00:46
 
vic7tarДата: Среда, 31.01.2018, 15:51 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 11
Репутация: 0
Статус: Offline
Alecsis, спасибо. Действительно, работает на порядки быстрее. Для себя урок - если используешь что-то большое - без CAllocate/Deallocate и указателей не обойтись.
 
Форум » Freebasic » Вопросы по языку FreeBasic » Как сформировать длинную строку?
  • Страница 1 из 1
  • 1
Поиск: