- Сообщения
- 2 486
- Реакции
- 667
Попробуй запускать cpdf не отдельными вызовами/запусками, а через AND, так оно еще быстрее должно стать
Попробуй запускать cpdf не отдельными вызовами/запусками, а через AND, так оно еще быстрее должно стать
С новой версией и 100к страниц, после ~ 15 минут не дождался, убил. Видимо, не дошло до стадии 4-х рабочих, да и одно ядро даже не грузит. Не исключено, идиосинкразия ваших библиотек к PDF от GS. Хотите, разбирайтесьВ ресурсах старая версия, брать нужно было вот отсюда же [PDF] - Сортировка страниц по их размерам
Про "не дождался" это странно. 5,27 сек - это внушает

%PS
% gswin64c -q -sDEVICE=pdfwrite -o pages.pdf this_file.ps
/P [
[298 420] [420 595] [595 842]
[842 1191] [1191 1684] [1684 2384]
[2384 3370]
] def
/L P length def
/Times findfont
72 scalefont setfont
1 1 100000 {
<< /PageSize P rand L mod get >> setpagedevice
72 72 moveto
6 string cvs show
showpage
} for
а, ну так и есть, перестроил плоский массив (который GS делает) из 100к страниц в "дерево" с "не более 10 ветвей/листьев на ветку" (тогда и Adobe Reader поживее листает этот файл), и все исправилось:идиосинкразия ваших библиотек к PDF от GS.
Zollinger
pdfsizes.exe
12.3801609
(хотя, кстати (или нет) на выходе в файлах опять ~ по 14к в каждом плоские массивы вместо деревьев. Не откроет свой же собственный файл повторно, если будет в каком-нибудь e.g. 99k)cpdf -create-pdf -create-pdf-pages 100000 -o junk.pdf
pdfsizes.exe sr junk.pdf
pdfsizes.exe sr "junk pages 0001-100000 A4 (100000 pg.).pdf"
^C
Глянул в обед, да, там как раз из-за плоской структуры получается замедление, именно из-за неудачного перебора, она до разделения и не доходит. Вечером попробую придумать что-нибудьНе-не, интереснее сюжет, когда родитель не может справиться со своим же трудным дитём, что приводит к их неминуемой погибели, в назидание всем. Деревья, конечно, анахронизм эпохи, когда объем памяти измерялся в мегабайтах. Видимо что-то O(2**N) у вас.
Код:cpdf -create-pdf -create-pdf-pages 100000 -o junk.pdf pdfsizes.exe sr junk.pdf pdfsizes.exe sr "junk pages 0001-100000 A4 (100000 pg.).pdf" ^C
Код:cpdf -create-pdf -create-pdf-pages 100000 -o junk.pdf pdfsizes.exe sr junk.pdf pdfsizes.exe sr "junk pages 0001-100000 A4 (100000 pg.).pdf" ^C
C:\src\go\pdfpgsizes.go\bin>cpdf -create-pdf -create-pdf-pages 100000 -o junk.pdf
C:\src\go\pdfpgsizes.go\bin>pdfsizes.exe sr -t junk.pdf
[info] mode=split-ranges requested_workers=0 effective_workers=4 source_groups=0 jobs=1 cpu=4 fallback_jobs=1 shared_context=true preloaded_sources=0
[time] junk pages 0001-100000 A4 (100000 pg.).pdf = 7 ms
[time] split-ranges total = 2776 ms
C:\src\go\pdfpgsizes.go\bin>pdfsizes.exe sr -t "junk pages 0001-100000 A4 (100000 pg.).pdf"
[info] mode=split-ranges requested_workers=0 effective_workers=4 source_groups=0 jobs=1 cpu=4 fallback_jobs=1 shared_context=true preloaded_sources=0
[time] junk pages 0001-100000 A4 (100000 pg.) pages 0001-100000 A4 (100000 pg.).pdf = 8 ms
[time] split-ranges total = 2791 ms
C:\src\go\pdfpgsizes.go\bin>pause
Для продолжения нажмите любую клавишу . . .