Оптимизация работы со строками
От: Tom Россия http://www.RSDN.ru
Дата: 15.07.03 11:33
Оценка:
Есть функция в которой в довольно долгом цилке делается
s= s & ...
тоесть строка постоянно увеличиваеться.
как можно оптимизировать в данном случае работу со строками?

хотелось бы наверное что то типа вначале выделить память довольно большого куска, а затем туда писать....
... << RSDN@Home 1.1 beta 1 >>
Народная мудрось
всем все никому ничего(с).
Re: Оптимизация работы со строками
От: Vi2 Удмуртия http://www.adem.ru
Дата: 15.07.03 14:26
Оценка: -1
Здравствуйте, Tom, Вы писали:

Tom>Есть функция в которой в довольно долгом цилке делается s= s & ... тоесть строка постоянно увеличиваеться.
Tom>как можно оптимизировать в данном случае работу со строками?

Пиши в файл, потом оттуда читай.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: Оптимизация работы со строками
От: Tom Россия http://www.RSDN.ru
Дата: 15.07.03 17:06
Оценка:
Здравствуйте, Vi2, Вы писали:

Vi2>Здравствуйте, Tom, Вы писали:


Vi2>

Tom>>Есть функция в которой в довольно долгом цилке делается s= s & ... тоесть строка постоянно увеличиваеться.
Tom>>как можно оптимизировать в данном случае работу со строками?

Vi2>Пиши в файл, потом оттуда читай.
вполне возможно, тем более если сделать файл в памяти....
... << RSDN@Home 1.1 beta 1 >>
Народная мудрось
всем все никому ничего(с).
Re: Оптимизация работы со строками
От: Аноним  
Дата: 15.07.03 21:47
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Есть функция в которой в довольно долгом цилке делается

Tom>s= s & ...
Tom>тоесть строка постоянно увеличиваеться.
Tom>как можно оптимизировать в данном случае работу со строками?

Tom>хотелось бы наверное что то типа вначале выделить память довольно большого куска, а затем туда писать....


Посмотри здесь
http://www.xbeat.net/vbspeed/
Re: Оптимизация работы со строками
От: dimzon Россия http://dimzon541.narod.ru
Дата: 17.07.03 09:23
Оценка: 20 (3)
Здравствуйте, Tom, Вы писали:

Tom>Есть функция в которой в довольно долгом цилке делается

Tom>s= s & ...
Tom>тоесть строка постоянно увеличиваеться.
Tom>как можно оптимизировать в данном случае работу со строками?

Tom>хотелось бы наверное что то типа вначале выделить память довольно большого куска, а затем туда писать....


Если кол-во конкатенаций детерминировано то выделяешь массив строк, заполняешь его данными и при выходе из цикла
делаешь strResult=Join(MyArrarray,"")

Для более общего случая используй примерно такой класс (набираю навскидку):
StringBilder.cs

Option Explicit

private const SIZE=64 ' Этой константой можно поиграть ;)

private m_aData(0) as String

private m_nPos as long

private sub Class_Initialize
    dim i as long
    Redim m_aData (SIZE-1)
    for i=0 to SIZE-1
        m_aData(i)=vbNullString
    next
    m_nPos = 0
end sub

public sub Append( s as string)
    dim i as long
    if m_nPos >=  SIZE then
        m_aData(0)=ToString()
        for i=1 to SIZE-1
            m_aData(i)=vbNullString
        next
        m_nPos = 1
    end if
end sub

public function ToString() as string
    ToString = Join(m_aData,vbNullString)
end function
... << RSDN@Home 1.1 beta 1 >>
Re: Оптимизация работы со строками
От: MarinaK  
Дата: 22.07.03 08:00
Оценка: -2
Здравствуйте, Tom, Вы писали:

Tom>Есть функция в которой в довольно долгом цилке делается

Tom>s= s & ...
Tom>тоесть строка постоянно увеличиваеться.
Tom>как можно оптимизировать в данном случае работу со строками?

Tom>хотелось бы наверное что то типа вначале выделить память довольно большого куска, а затем туда писать....


Когда конкотинируешь строки лучше пользоваться +, а не &
& — делает кастинг, а это время.
s = s + ..
Re[2]: Оптимизация работы со строками
От: dimzon Россия http://dimzon541.narod.ru
Дата: 22.07.03 08:17
Оценка:
Здравствуйте, MarinaK, Вы писали:

MK>Здравствуйте, Tom, Вы писали:


Tom>>Есть функция в которой в довольно долгом цилке делается

Tom>>s= s & ...
Tom>>тоесть строка постоянно увеличиваеться.
Tom>>как можно оптимизировать в данном случае работу со строками?

Tom>>хотелось бы наверное что то типа вначале выделить память довольно большого куска, а затем туда писать....


MK>Когда конкотинируешь строки лучше пользоваться +, а не &

MK>& — делает кастинг, а это время.
MK>s = s + ..
Это копейки, намного страшнее перевыделение памяти в цикле
... << RSDN@Home 1.1 beta 1 >>
Re: Оптимизация работы со строками
От: Yacha Россия  
Дата: 22.07.03 16:09
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Есть функция в которой в довольно долгом цилке делается

Tom>s= s & ...
Tom>тоесть строка постоянно увеличиваеться.
Tom>как можно оптимизировать в данном случае работу со строками?

Tom>хотелось бы наверное что то типа вначале выделить память довольно большого куска, а затем туда писать....

Очень сильно помогает функция Join, если в цикле нужно "склеить" много строк, то лучше эту работу поручить Join, предварительно заполнив массив строками
... << RSDN@Home 1.0 beta 6a >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.