WedX - журнал о программировании и компьютерных науках

самый эффективный способ заархивировать файлы с помощью coldfusion или java

Я ищу наиболее эффективный способ сжать много больших файлов с помощью ColdFusion или Java. Я пробовал использовать <cfzip> и zip.cfc от Нейта Нильсена (https://farmancreative.com/womenskiteboarding/admin/dccom/components/dcFileManagerV3/actions/cfc/zip.cfc). Для тестов я заархивировал каталог, содержащий 80 файлов mp4 общим объемом 1,18 ГБ. Результаты ниже. Я вообще не заметил разницы, когда работал тег <cfzip>, обычные «шаги» ColdFusion не изменились. Но с zip.cfc использование памяти было более «пилообразным».

Итак, у меня вопрос, какой результат лучше? Или есть другой более новый способ, о котором я не знаю, который лучше, чем оба этих?

Меня больше интересует использование памяти, чем скорость. Но что касается скорости, <cfzip> был немного быстрее. <cfzip> время было 100 871. zip.cfc время было 141 285.

Спасибо!введите здесь описание изображения

<cfzip> Тестовый код:

<cfoutput>
    <cfset tBegin = GetTickCount()>
    <cfzip
        action="zip"
        source="#dir#"
        file="#zipFile#"
        storepath="false"
        overwrite="true"
        />
    <cfset tEnd = GetTickCount()>
    <cfset scriptTime = (tEnd - tBegin)>
    Script Time: #scriptTime#
</cfoutput>

zip.cfc Тестовый код:

<cfdirectory directory="#dir#" name="d" recurse="false">
<cfoutput>
    <cfset tBegin = GetTickCount()>
    <cfset zipper = createObject("component", "zip")>
    <cfscript>zipper.newZip(zipFile);</cfscript>
    <cfloop query="d">
        <cfset zipper.addFile(dir&d.name)>
    </cfloop>
    <cfscript>zipper.createZip();</cfscript>
    <cfset tEnd = GetTickCount()>
    <cfset scriptTime = (tEnd - tBegin)>
    Script Time: #scriptTime#
</cfoutput>

  • Э-э, сжатие файлов MPEG? Вы действительно получаете столько места? 18.03.2014
  • Нет, ничего, я просто тестировал большие файлы, и это то, что у меня было. Будет ли иметь значение тип файла? Оба теста проводились с одними и теми же файлами. Я соберу множество текстовых и pdf-файлов, проведу тесты и посмотрю, что произойдет. Я не тестирую компрессию здесь, в основном смотрю память. 18.03.2014
  • Ну, я не могу объяснить, почему, но да, это имеет значение; попытка сжатия двоичных файлов (из-за отсутствия лучшего термина) занимает больше времени, чем текстовые файлы. Если в конечном итоге вы не будете работать с такими файлами, вам следует создать репрезентативный набор, чтобы измерения были более точными. 18.03.2014
  • Что говорит fge - тестируйте с файлами, которые будут использоваться! Если у вас недостаточно этих файлов для серьезного теста, возможно, вам не о чем беспокоиться? Если это имеет значение, рассмотрите что-то вроде 7-zip, который дает вам как больше контроля/параметров, так и (в своем графическом интерфейсе) предоставляет расчетное использование памяти для сжатия/декомпрессии на основе выбранных параметров. 18.03.2014
  • Спасибо вам обоим. Я провожу тесты, когда мы говорим с реальными типами файлов, и результаты очень разные! Опубликую их в ближайшее время. Спасибо. 18.03.2014
  • Если вы заботитесь об использовании памяти, попробуйте cfexecute и утилиту zip из командной строки. 18.03.2014
  • @ Генри, мы можем так раскошелиться только на пару вещей. Наша среда очень заблокирована, чтобы получить WinZip с поддержкой командной строки на сервере, потребовался бы длительный процесс утверждения, но мы рассматриваем это. 18.03.2014
  • Только что просмотрел код zip.cfc - ни одна из функций, ни компонент не имеют output=false на них, поэтому он будет излишне буферизоваться (что замедлит его), и нет области видимости var (поэтому это не потокобезопасно). Некоторые части кода тоже выглядят довольно сомнительно — я определенно рекомендовал бы не использовать этот zip.cfc, даже если он застрял на версии CF до того, как был добавлен cfzip. 18.03.2014
  • @PeterBoughton, спасибо! Ваш комментарий о буферизации вызвал мой интерес. Однако я не мог доказать, что это правда. Пожалуйста, посмотрите этот пост, который я только что создал: stackoverflow.com/questions/22486381/ 18.03.2014
  • Отключите управление пробелами и просмотрите исходный код. 18.03.2014

Ответы:


1

Мне нужно бежать, поэтому сейчас я не могу много печатать, но вернусь к этому завтра. Вот результаты моего теста после его запуска с реальными типами файлов (.txt, .ppt, .doc, .swf и т. д.). Похоже, <cfzip> намного лучше, чем zip.cfc.введите здесь описание изображения

17.03.2014
  • Я столкнулся с некоторыми проблемами производительности с CFZip с Windows. Я переключился на использование CFExecute с 7Zip вместо того, чтобы тратить от 30 секунд до 5 минут на java. 7-zip.org 7Zip более надежен (т. е. поддерживает больше типов архивов, автоматически удаляет исходные файлы после завершения). Во внешнем интерфейсе я выполняю запрос ajax, чтобы определить, существует ли окончательный ZIP-файл до принудительной загрузки. В результате этого наш сервер приложений стал намного более стабильным. 13.07.2017
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

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

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]