Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.07;
Скачать: CL | DM;

Вниз

Удалить подстроку из очень большой строки (больше 2 ГБ )   Найти похожие ветки 

 
Sha ©   (2007-09-09 23:17) [120]

>  oxffff ©   (09.09.07 22:57) [116] - [119]

Конечно, надо вставить вызов
  UniqueString(s);
перед оператором
 q:=pointer(s); //чтобы компилятор не вставлял вызовы UniqueString
раз уж мы все делаем сами.

Спасибо за найденную неточность :)


 
oxffff ©   (2007-09-09 23:26) [121]


> Sha ©   (09.09.07 23:17) [120]
> >  oxffff ©   (09.09.07 22:57) [116] - [119]
>
> Конечно, надо вставить вызов
>   UniqueString(s);
> перед оператором
>  q:=pointer(s); //чтобы компилятор не вставлял вызовы UniqueString
> раз уж мы все делаем сами.
>
> Спасибо за найденную неточность :)


Эх профессиональный вы наш. :)

UniqueString(s) - создаст копию строки, если сможет.
Не забываем об оптимизации.

Две огромных строки - это не компромис.

Предлагаю оптимизировать ваш проверять RefCount на -1 и тогда делать
UniqueString.


 
oxffff ©   (2007-09-09 23:30) [122]


> oxffff ©   (09.09.07 23:26) [121]


Ошибочка вышла UniqueString(s) этим и занимается.


 
Sha ©   (2007-09-09 23:37) [123]

> oxffff ©   (09.09.07 23:26) [121]

> Эх профессиональный вы наш. :)
Профессионал может забыть, что-сделать,
а ламера надо заставлять это делать.
Почувствовал разницу?

> UniqueString(s) - создаст копию строки, если сможет.
> Не забываем об оптимизации.
> Две огромных строки - это не компромис.

UnicueString создат копию только в случае RO-строки или неуникальной,
т.е. как раз в том случае, как нам и надо.
Это описано в хелпе, не поленись - прочитай.

> Предлагаю оптимизировать ваш проверять RefCount на -1 и тогда делать
UniqueString.
Все сделано уже до нас в коде UniqueString. :)


 
oxffff ©   (2007-09-09 23:44) [124]


> Sha ©   (09.09.07 23:37) [123]
> > oxffff ©   (09.09.07 23:26) [121]
>
> > Эх профессиональный вы наш. :)
> Профессионал может забыть, что-сделать,
> а ламера надо заставлять это делать.
> Почувствовал разницу?


Ну вы и жук.
Не красиво себя так вести.

Не надо выкручиваться. [62] не предусматривал работы с конст строками

Увы. Сами себя выдали.

Доказательство комментарий

q:=pointer(s); //чтобы компилятор не вставлял вызовы UniqueString

Так что руки растут от туда же.


> Это описано в хелпе, не поленись - прочитай.


oxffff ©   (09.09.07 23:30) [122]

Далее по тексту. Про оптимизацию забыли?
Мы работаем с большой строкой, так что ваш вариант - увы не может удовлетворить.


 
oxffff ©   (2007-09-09 23:47) [125]

Что касаемо хелпа.
Я его читаю, но в нем (UniqueString help) не сказано про строки константы.
Тогда мне помогает отладчик.


 
oxffff ©   (2007-09-09 23:56) [126]


> Sha ©   (09.09.07 23:37) [123]
> > oxffff ©   (09.09.07 23:26) [121]
>
> > Эх профессиональный вы наш. :)
> Профессионал может забыть, что-сделать,
> а ламера надо заставлять это делать.
> Почувствовал разницу?


Я то почуствовал. Что так называемый профессионал пытался что то доказать, хотя обделался на том же самом и  ему как профессионалу (а уж тем более МАСТЕРУ DELPHI), НЕЛЬЗЯ забывать что-то сделать, ибо тогда он не ПРОФЕССИОНАЛ (хотя не мне судить). Так что извольте погончики свои снять и сдать обратно.


 
Sha ©   (2007-09-09 23:58) [127]

> oxffff ©   (09.09.07 23:44) [124]

>>> Эх профессиональный вы наш. :)
>> Профессионал может забыть, что-сделать,
>> а ламера надо заставлять это делать.
>> Почувствовал разницу?
> Ну вы и жук.
> Не красиво себя так вести.

А чем, по-твоему, отличается профессионал от ламера?

> Не надо выкручиваться. [62] не предусматривал работы с конст строками
> Доказательство комментарий
> q:=pointer(s); //чтобы компилятор не вставлял вызовы UniqueString

В инете дофига моего кода, работающего со строками, и везде
перед  
 q:=pointer(s); //чтобы компилятор не вставлял вызовы UniqueString
стоит
 UniqueString(s);

> Так что руки растут от туда же.

Вот это некрасиво - который раз уже

> Далее по тексту. Про оптимизацию забыли?
> Мы работаем с большой строкой, так что ваш вариант - увы не может удовлетворить.

Почему?
Разве он использует дополнительную память?
Или делает лишние операции?


 
oxffff ©   (2007-09-10 00:02) [128]

to Sha

Я нигде не указал, что мой пример пригоден для всего.
Когда его привел, я исходил из оптимизации.
И до последнего отстаивал его по причине не возможности выделить дополнительный блок памяти.


 
oxffff ©   (2007-09-10 00:04) [129]


> Почему?
> Разве он использует дополнительную память?
> Или делает лишние операции?


А что нет? Читайте help

Для конст строки будет создан дублекат.


 
oxffff ©   (2007-09-10 00:06) [130]


> Вот это некрасиво - который раз уже


Не удачно выразился.
ПОД этим понимайте, что вы и я написали код, который не обрабатывает определенного вида ситуации. А не то о чем вы подумали. :)


 
oxffff ©   (2007-09-10 00:08) [131]


> А что нет? Читайте help


help кстати молчит по этому поводу. Только отладчик позволит выяснить истинное поведение

       MOV     ECX,[EDX-skew].StrRec.refCnt
       DEC     ECX
       JE      @@exit


 
Sha ©   (2007-09-10 00:09) [132]

> oxffff ©   (10.09.07 00:04) [129]
> Для конст строки будет создан дублекат.

В нашем случае это необходимо, иначе процедура будет неработоспособна.


 
Sha ©   (2007-09-10 00:11) [133]

> oxffff ©   (10.09.07 00:06) [130]
> Не удачно выразился.

Извинения приняты.
Впредь потрудись подбирать слова.


 
oxffff ©   (2007-09-10 00:12) [134]

Я надеюсь мы наконец поняли друг друга.

И уверен сохраним самое главное - уважение друг другу.


 
oxffff ©   (2007-09-10 00:23) [135]


> Sha ©   (10.09.07 00:09) [132]
> > oxffff ©   (10.09.07 00:04) [129]
> > Для конст строки будет создан дублекат.
>
> В нашем случае это необходимо, иначе процедура будет неработоспособна.
>


Поэтому ваши замечания к моему коду и мои требования к вызову
virtualProtect и explicit constants(do not use shared const) исходили из
oxffff ©   [128]


 
Sha ©   (2007-09-10 00:28) [136]

> oxffff ©   (10.09.07 00:23) [135]

Не надо опасаться, что код создает уникальную копию константной строки.
Такие строки большими не бывают.



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2007.10.07;
Скачать: CL | DM;

Наверх




Память: 0.77 MB
Время: 0.035 c
2-1189331798
zzz0001
2007-09-09 13:56
2007.10.07
В ЧЕМ ОШИБКА???


6-1170949405
AllDontFire
2007-02-08 18:43
2007.10.07
Как реализовать 3х уровневое приложение?


15-1188999922
Галинка
2007-09-05 17:45
2007.10.07
Прикол в Эклипсе


15-1189009721
fisher
2007-09-05 20:28
2007.10.07
cos(x) в полярной системе


2-1189424050
Mariya
2007-09-10 15:34
2007.10.07
Поиск в Delphi