Текущий архив: 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