• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Вопросы по работе со строками

  • Автор темы Автор темы Darker
  • Дата начала Дата начала
VladSh
Объясняю ещё раз — в оригинальном примере делался ОДИН опыт с 100000 конкатенаций для строки и sb.append для StringBuffer.
Разница ~11 раз в пользу StringBuffer. Эти результаты я не оспориваю. Но я провёл также серию из 10000 опытов с 10 конкатенаций для строки и sb.append для StringBuffer (в каждом опыте создавался новый StringBuffer, а не дописывался старый). Время исполнения для конкатенаций оказалось меньше, чем для StringBuffer. Поэтому я отказался от идеи использования StringBuffer для получения коротких строк, например, для msgbox. Если же нужно собирать мега-строки, то использование StringBuffer, разумеется, предпочтительнее.
 
тогда почему Ваш класс заваливается с ошибкой 14 (Out of String space), а если её забить, то вываливается в Overflow?
а размер fContent$ чему равен? Если >2gb, тут Вам и StringBuffer не поможет. Я имел ввиду если в сумме >2Gb,
возьмите файл меньше 2GB
И, да, нашел недочет в своем классе, забыл включить флаг о превышении лимита в 2Gb, подправил класс, Sorry!
 
nvy
Вот теперь всё понятно ))


а размер fContent$ чему равен? Если >2gb, тут Вам и StringBuffer не поможет. Я имел ввиду если в сумме >2Gb,
возьмите файл меньше 2GB
Я ж писал, гляньте в коде, - использовал файлы размером 53 и 110 Mb. Соответсвенно LenB() от них равен Len()*2, т.е как минимум в 10 раз меньше чем 2Gb.
Попробуйте, я даже код вызова дал, надо только путь к файлу подставить..
 
про 2Гб...
возникает закономерный вопрос - зачем с такими объемами работать, "в памяти"?
-2Гб - предел для процесса в хе86 32бит системах (на данный момент - большинство десктопов)
-файлы бывают и больше
-есть алгоритмы мап-редьюс - именно для обхода ограничений по памяти
-есть алгоритмы работающие с потоком (сразу), но надо подгонять процесс под них
 
lmike
Я сейчас наткнулся на то, что в LS работа со строками, даже до 2Gb - это теория (в случае работы с файлами более 50Mb)... StringBuffer в Java решает вопрос >= 2Gb или и там придётся дотачивать?
 
в java, в LDN, более сугбо :), память отводится jvm-у в ини файле...


но ограничения для 32бит такие же (а ЕБИм не сделал 64бит LDN и jvm в нём)
и разумеется - будут отъедены сервисные Мб, а потому будет менее 2Гб
а если жвм исполняется в контексте основного процесса (хотя врядли) - то всё ещё печальнее ;)

а потому точи-не-точи ИБМ+32бит+винтел - багофичи форева ;)
есть надежда (для серверов - КМК) на link removed

потому и нет смысла даже походить к 2Гб (вне зависимости от языка) на интеле 32бит
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab