Главная страница
    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.75 MB
Время: 0.051 c
10-1137243244
Alex17
2006-01-14 15:54
2007.10.07
Как это выгледит в Дельфи


15-1189424595
MZ
2007-09-10 15:43
2007.10.07
Управление пользователями FireBird


15-1189494932
TUser
2007-09-11 11:15
2007.10.07
Ищу дрова


15-1189138046
SerJaNT
2007-09-07 08:07
2007.10.07
Вопрос по HTML


2-1189499934
vasyl
2007-09-11 12:38
2007.10.07
Автозапуск





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский