FileSystem



  • Название: FileSystem
    Версия: 1.3 (у стандартного модуля FileSystem версия 1.2)
    586f88a3-7bf1-4ec9-850d-5d8ad26a4281-изображение.png
    Данные: FileSystem.zip
    Исходник: Модуль создавал руками в текстовом редакторе, но для наглядности прикреплю скрипт с этим же алгоритмом, но из действий BAS: Пример.xml
    Согласие на добавление модуля в BAS: Да
    Описание: Изменил стандартный модуль "FileSystem", действие "Читать Файл В Список" теперь может читать не весь файл, а необходимое количество строк с начала или с конца файла:
    582d6074-5e11-469f-9b87-31c619cfb41a-изображение.png

    работает очень быстро, так как чтение идёт побайтовое. Для сравнения вывод 10 последних строк из файла весом 425mb (3 296 384 строк)
    6a5e7977-0b17-40be-8351-270faa7e8c48-изображение.png

    при использовании стандартного модуля, действие "Читать Файл В Список" на моём пк занимает 11 секунд

    af3a2710-18e1-44f3-9b79-566c55e6e977-изображение.png

    при этом на эти 11 секунд интерфейс BAS зависает.


    При использовании изменённого модуля, действие "Читать Файл В Список" на моём пк занимает 0 секунд

    08e9f397-f347-4ece-b8e8-3aeae91e1c68-изображение.png

    при этом интерфейс не зависает.
    В режиме "записи" само действие отрабатывает мгновенно:
    support377.gif

    История версий:



  • @Fox А почему в этом случае не использовать ресурсы ? Там ведь порционно и читает вроде по 10 кб ?

    И с такими объемами наверное все же база будет эффективнее, там и более гибко можно фильтровать.
    Лучше бы проголосовал за возможность минусовать группу или несколько групп в запросе к базе :)



  • @Fox 0 секунд - это когда весь файл в список или N-ое число строк в список?



  • @tet-vivi в примере же вроде показано 10 строк.



  • @Bigma просто при прочтении возникает чувство что его "Читать Файл В Список" быстрее родного "Читать Файл В Список".
    я понимаю что скорость за счет того что читается только часть файла. или нет?
    я запутался.



  • @tet-vivi Я честно до конца так и не понял смысл сего творения. Нету отступа, нету удаления прочтенного ...



  • @Bigma из того что я понял сиё творение - это облегчённый способ получить N-ое количество строк с конца/начала файла. под "облегчённый " это остановка перебора файла по достижении нужного числа строк.

    недавно баловался с подобным изучая rust.



  • @tet-vivi А смысл, ну вот вы получили первые 10 строк, а дальше что ? можно следующие 10 получить ? из скрина я не вижу такой возможности...



  • @Bigma said in FileSystem:

    @tet-vivi А смысл, ну вот вы получили первые 10 строк, а дальше что ? можно следующие 10 получить ? из скрина я не вижу такой возможности...

    реализаций этого возможно несколько.
    не все так просто.
    это время и усилия которые нужно приложить для этого.
    Это просто делимся своими наработками, вдруг кому то пригодиться.



  • @tet-vivi да я не против, просто практического применения пока не вижу для себя. Поэтому и спросил, почему не ресурс и не база ....



  • есть например вот такая тема https://community.bablosoft.com/topic/11151/получение-рандомной-случайной-строки-из-файла

    там хоть понятно где это можно использовать.



  • @Bigma на основании того пакета я тот исполняемый файл про апгрейдил.
    добавил функцию поиска строки(или строк) по маске/началу.
    например: запрос по login может вернуть строку login:pass
    но по cpu этот пакет/метод тут невыгоден.(нагрузка cpu)
    возможно использование чистой регулярки эффективней.

    @Bigma кстати применение.
    в начале файлов могут быть метаданные и/или другие важные данные.



  • @Bigma said in FileSystem:

    @Fox А почему в этом случае не использовать ресурсы ? Там ведь порционно и читает вроде по 10 кб ?

    Это возможно только при выборе ресурса до старта скрипта, созданные в процессе работы ресурсы лишены этой возможности. И использование ресурса не позволит быстро получить 10 последних строк файла, даже при использовании нового апи для работы с ресурсами:
    513996f3-f053-48b2-af18-521b1eed4285-изображение.png
    a2adf9de-0773-4d93-814a-348f773bca67-изображение.png

    И с такими объемами наверное все же база будет эффективнее, там и более гибко можно фильтровать.

    Данные в базу нужно тоже заносить, но это не всегда целесообразно. Например если нужно вывести в лог последние 10 записей файла.

    Лучше бы проголосовал за возможность минусовать группу или несколько групп в запросе к базе :)

    Каждый ждёт реализацию своей хотелки :(

    @tet-vivi said in FileSystem:

    @Bigma просто при прочтении возникает чувство что его "Читать Файл В Список" быстрее родного "Читать Файл В Список".
    я понимаю что скорость за счет того что читается только часть файла. или нет?
    я запутался.

    Я же добавил достаточно подробное описание, приложил скриншоты..

    22d0b93b-0bba-4d7c-958a-cb3c74b598ab-изображение.png

    @Bigma said in FileSystem:

    @tet-vivi Я честно до конца так и не понял смысл сего творения. Нету отступа, нету удаления прочтенного ...

    Отступа? Удаление прочтённого? Вы понимаете словосочетание "побайтовое чтение файла"? Я даже приложил тестовый скрипт, в котором наглядна показана логика работы действиями BAS.

    Для чтения с конца файла алгоритм в цикле читает файл побайтово
    от "размер файла -100 байт" до "размер файла",
    затем полученную строку парсит в массив по символу переноса строки. Если полученных элементов недостаточно, то алгоритм увеличивает отрезок данных, читает файл побайтово
    от "размер файла -200 байт" до "размер файла".
    И так с каждой итерацией алгоритм увеличивает отрезок читаемых данных на 100 байт, пока не наберётся указанное в условии количество строк или отрезок не будет равен всему файлу.

    Блин.. Для кого я всё это расписываю...

    Короче, есть в BAS действие "Читать Файл", которое читает файл так, как он есть. И есть едйствие "Читать Файл В Список", которое прочитанный файл разбивает в список по разделителю символа переноса строки. Я немного улучшил стандартное действие, добавив новую возможность - читать часть файла в список. Причём здесь база\ресурсы\группы?



  • @Fox

    @Fox said in FileSystem:

    Блин.. Для кого я всё это расписываю...

    Инкогнито Обыкновенный, [05.06.20 14:13]
    что такое отпечаток в басе?

    Александр Колесник, [05.06.20 14:13]
    Юзерагент+"шумы"

    Инкогнито Обыкновенный, [05.06.20 14:13]
    понятно)

    Инкогнито Обыкновенный, [05.06.20 14:14]
    это набор параметров устройства, а не шумы

    Инкогнито Обыкновенный, [05.06.20 14:15]
    а отпечаток есть у любого устройства. и инста к нему пиииздец как доебывается

    Александр Колесник, [05.06.20 14:15]
    [В ответ на Инкогнито Обыкновенный]
    А в юзерагенте этого нет?)

    Вот для кого, не знают ничего но кричат о багах баса и считают себя тру



  • @artihorror said in FileSystem:

    Вот для кого, не знают ничего но кричат о багах баса и считают себя тру

    Забей ) Многие уверены, что есть Супер сайты, которые могут узнать ВСЕ о твоем ПК ))



  • @UserTrue сейчас сбшник из майкрософта тихонько хихикнул:D



  • @artihorror said in FileSystem:

    @UserTrue сейчас сбшник из майкрософта тихонько хихикнул:D

    Ну речь же не о них ))



  • приветствую!

    скорость чтения больших файлов даёт прирост (в сравнении с версией 1.2) только если читать часть файла? или прирост в скорости будет в любом случае?

    просто на данный момент, после установки вашего модуля и чтения файла в список (полностью) - прироста в скорости не вижу

    как читался файл (150мб) секунд 10, так и читается.



  • @Sadzurami said in FileSystem:

    приветствую!

    скорость чтения больших файлов даёт прирост (в сравнении с версией 1.2) только если читать часть файла? или прирост в скорости будет в любом случае?

    просто на данный момент, после установки вашего модуля и чтения файла в список (полностью) - прироста в скорости не вижу

    как читался файл (150мб) секунд 10, так и читается.

    А за счёт чего должен был возникнуть эффект если читать файл полностью? Модуль сделан на основе действия BAS, я даже приложил тестовый скрипт, в котором показан алгоритм действий. Так же рассказал максимально подробно как он работает...



  • @Sadzurami эффект может быть только при чтении части файла.
    для ускорения файл можно разместить на более быстрый диск.
    если оперативы много, то можно в нем создать диск. быстрей ssd будет


Log in to reply
 

  • 37
  • 8
  • 106
  • 52
  • 10
  • 40
  • 113
  • 7