Для поддержания разговора в Хотелке пришлось собрать статистику по перепаковке имеющихся у меня кэшей с PNG-тайлами.

Пережимал 2 программами. Сказать, что одна однозначно лучше другой, наверное, нельзя.
До и после "перекодировки" замерялось количество файлов, их общий размер, высчитывался объём диска, которое они занимали бы при разных размерах кластера (512,1024,2048,4096 байт на кластер). Далее в таблицах обозначение 1 байт на кластер использовалось для указания реального размера ).
В итоговую таблицу свёл соотношения размеров (для разных размеров кластера) ДО пережатия к соответствующим размерам ПОСЛЕ пережатия.
В последнем столбце указано соотношение ДО при размере кластера 4096 к размеру ПОСЛЕ при размере кластера 512, которое показывает максимально возможную выгоду от
одновременного ужатия PNG тайлов и перехода к минимальному размеру кластера.
Код: Выделить всё
------------------------------------------------------------------------------------
Map Name: Compressor: Cluster size:
real=1 512 1024 2048 4096 combo*
------------------ ----------- ------ --- ---- ---- ---- -----
GarminQuickDraw PNGnq 3,3 3,2 3,1 3 2,7 3.6
optiPNG -o2 2,1 2,1 2,1 2,0 1,8 2,4
DesnogorskQD optiPNG -o7 2,2 2,2 2,1 2,1 2 2.3
rosreestr_cadastr optiPNG -o2 2,2 2,2 2 1,9 2 2,7
optiPNG -o7 2,2 2,2 2 1,9 2 2,7
navionics optiPNG -o2 2,5 2,3 2,0 2,0 1,0 2.6
navionics_sonarchart PNGnq 1,6 1,6 1,6 1,4 1,1 1,9
optiPNG -o7 2,4 2,2 2,0 2,0 1,1 2,6
osmmapMapnik PNGnq 1,1 1,1 1,1 1 1 1,5
optiPNG -o7 1,1 1,1 1,1 1 1 1,6
yahyb PNGnq 1,6 1,5 1,3 1,2 1,1 4,7
optiPNG -o2 2,2 1,6 1,4 1,2 1,1 4,9
optiPNG -o7 2,2 1,6 1,4 1,2 1,1 4,9
----- -----------------------------
(alloc size before /alloc size after)
-------------------------------------------------------------------------------------
*combo: alloc4096before/alloc512after
Link to PngNQ converter: https://sourceforge.net/projects/pngnq/
Link to OptiPNG converter: https://sourceforge.net/projects/optipng/
OptiPNG с ключём -o7 перебирает гораздо больше параметров, чем с ключём -o2 (по-умолчанию)
- скрытый текст: показать
Код: Выделить всё
DesnogorskQD QuickDraw:
=======================
Before:
-------
Total files: 23998
Cluster Allocated size:
size: bytes Kb Mb
1: 631009149 ; 616219 ; 601 << Total files size
_512: 637190656 ; 622256 ; 607
1024: 643379200 ; 628300 ; 613
2048: 655575040 ; 640210 ; 625
4096: 680288256 ; 664344 ; 648
After (optiPNG -o7):
------------------
Total files: 23998
Cluster Allocated size:
size: bytes Kb Mb
1: 288721119 ; 281954 ; 275 << Total files size
_512: 294878720 ; 287967 ; 281
1024: 300977152 ; 293923 ; 287
2048: 313325568 ; 305982 ; 298
4096: 340307968 ; 332332 ; 324
1: 601/275=2,2
_512: 607/281=2,2
1024: 613/287=2,1
2048: 625/298=2,1
4096: 648/324=2
combo (alloc4096before/alloc512after): 648/281=2,3
GarminQuickDraw
===============
Before:
-------
Total files: 12569
Cluster Allocated size:
size: bytes Kb Mb
1: 214314515 ; 209291 ; 204 << Total files size
_512: 217511936 ; 212414 ; 207
1024: 220747776 ; 215574 ; 210
2048: 226981888 ; 221662 ; 216
4096: 239898624 ; 234276 ; 228
After (PNGnq):
------------------
Total files: 12569
Cluster Allocated size:
size: bytes Kb Mb
1: 64170441 ; 62666 ; 61 << Total files size
_512: 67403776 ; 65824 ; 64
1024: 70429696 ; 68779 ; 67
2048: 75571200 ; 73800 ; 72
4096: 90517504 ; 88396 ; 86
1: 204/61=3,3
_512: 207/64=3,2
1024: 210/67=3,1
2048: 216/72=3
4096: 228/86=2,7
combo (alloc4096before/alloc512after): 228/64=3,6
After (optiPNG -o2):
------------------
Total files: 12569
Cluster Allocated size:
size: bytes Kb Mb
1: 99434428 ; 97103 ; 94 << Total files size
_512: 102639616 ; 100234 ; 97
1024: 105713664 ; 103236 ; 100
2048: 113098752 ; 110448 ; 107
4096: 130908160 ; 127840 ; 124
1: 204/94=2,1
_512: 207/97=2,1
1024: 210/100=2,1
2048: 216/107=2,0
4096: 228/124=1,8
combo (alloc4096before/alloc512after): 228/97=2,4
navionics
=========
Before:
-------
Total files: 122888
Cluster Allocated size:
size: bytes Kb Mb
1: 400678629 ; 391287 ; 382 << Total files size
_512: 448474624 ; 437963 ; 427
1024: 501102592 ; 489358 ; 477
2048: 515743744 ; 503656 ; 491
4096: 525123584 ; 512816 ; 500
After (optiPNG -o2):
------------------
Total files: 122888
Cluster Allocated size:
size: bytes Kb Mb
1: 160575013 ; 156811 ; 153 << Total files size
_512: 198287872 ; 193640 ; 189
1024: 255764480 ; 249770 ; 243
2048: 258719744 ; 252656 ; 246
4096: 504242176 ; 492424 ; 480
1: 382/153=2,5
_512: 427/189=2,3
1024: 477/243=2,0
2048: 491/246=2,0
4096: 500/480=1,0 ???
combo (alloc4096before/alloc512after): 500/189=2,6
navionics_sonarchart
====================
Before:
-------
Total files: 79907
Cluster Allocated size:
size: bytes Kb Mb
1: 288878769 ; 282108 ; 275 << Total files size
_512: 316612096 ; 309191 ; 301
1024: 347219968 ; 339082 ; 331
2048: 357005312 ; 348638 ; 340
4096: 377815040 ; 368960 ; 360
After (PNGnq):
------------------
Total files: 79360
Cluster Allocated size:
size: bytes Kb Mb
1: 178467237 ; 174284 ; 170 << Total files size
_512: 197362176 ; 192736 ; 188
1024: 216884224 ; 211801 ; 206
2048: 261826560 ; 255690 ; 249
4096: 329297920 ; 321580 ; 314
1: 275/170=1,6
_512: 301/188=1,6
1024: 331/206=1,6
2048: 340/249=1,4
4096: 360/314=1,1
combo (alloc4096before/alloc512after): 360/188=1,9
After (optiPNG -o7):
------------------
Total files: 79907
Cluster Allocated size:
size: bytes Kb Mb
1: 122038382 ; 119178 ; 116 << Total files size
_512: 144592896 ; 141204 ; 137
1024: 175456256 ; 171344 ; 167
2048: 182859776 ; 178574 ; 174
4096: 330002432 ; 322268 ; 314
1: 275/116=2,4
_512: 301/137=2,2
1024: 331/167=2,0
2048: 340/174=2,0
4096: 360/314=1,1
combo (alloc4096before/alloc512after): 360/137=2,6
osmmapMapnik
============
Before:
-------
Total files: 83757
Cluster Allocated size:
size: bytes Kb Mb
1: 349138359 ; 340955 ; 332 << Total files size
_512: 372732928 ; 363997 ; 355
1024: 398173184 ; 388841 ; 379
2048: 449294336 ; 438764 ; 428
4096: 545959936 ; 533164 ; 520
After (PNGnq):
------------------
Total files: 83757
Cluster Allocated size:
size: bytes Kb Mb
1: 328840482 ; 321133 ; 313 << Total files size
_512: 352491520 ; 344230 ; 336
1024: 377929728 ; 369072 ; 360
2048: 429086720 ; 419030 ; 409
4096: 526589952 ; 514248 ; 502
1: 332/313=1,1
_512: 355/336=1,1
1024: 379/360=1,1
2048: 428/409=1
4096: 520/502=1
combo (alloc4096before/alloc512after): 520/336=1,5
After (optiPNG -o7):
------------------
Total files: 83757
Cluster Allocated size:
size: bytes Kb Mb
1: 321945211 ; 314399 ; 307 << Total files size
_512: 344740352 ; 336660 ; 328
1024: 369269760 ; 360615 ; 352
2048: 419313664 ; 409486 ; 399
4096: 522502144 ; 510256 ; 498
1: 332/307=1,1
_512: 355/328=1,1
1024: 379/352=1,1
2048: 428/399=1,1
4096: 520/498=1
combo (alloc4096before/alloc512after): 520/328=1,6
rosreestr_cadastr
=================
Before:
-------
Total files: 20162
Cluster Allocated size:
size: bytes Kb Mb
1: 164831949 ; 160968 ; 157 << Total files size
_512: 169985536 ; 166001 ; 162
1024: 174464000 ; 170375 ; 166
2048: 185937920 ; 181580 ; 177
4096: 213053440 ; 208060 ; 203
After (optiPNG -o2):
------------------
Total files: 20162
Cluster Allocated size:
size: bytes Kb Mb
1: 73712524 ; 71984 ; 70 << Total files size
_512: 79564800 ; 77700 ; 75
1024: 85978112 ; 83963 ; 81
2048: 99569664 ; 97236 ; 94
4096: 109301760 ; 106740 ; 104
1: 157/70=2,2
_512: 162/75=2,2
1024: 166/81=2
2048: 177/94=1,9 - ???
4096: 203/104=2
combo (alloc4096before/alloc512after): 203/75=2,7
After (optiPNG -o7):
------------------
Total files: 20162
Cluster Allocated size:
size: bytes Kb Mb
1: 73710042 ; 71982 ; 70 << Total files size
_512: 79562752 ; 77698 ; 75
1024: 85974016 ; 83959 ; 81
2048: 99565568 ; 97232 ; 94
4096: 109293568 ; 106732 ; 104
1: 157/70=2,2
_512: 162/75=2,2
1024: 166/81=2
2048: 177/94=1,9 - ???
4096: 203/104=2
combo (alloc4096before/alloc512after): 203/75=2,7
yahyb
=====
Before:
-------
Total files: 70776
Cluster Allocated size:
size: bytes Kb Mb
1: 93565832 ; 91372 ; 89 << Total files size
_512: 107303936 ; 104789 ; 102
1024: 139609088 ; 136337 ; 133
2048: 204236800 ; 199450 ; 194
4096: 334721024 ; 326876 ; 319
After (PNGnq):
------------------
Total files: 70776
Cluster Allocated size:
size: bytes Kb Mb
1: 57815401 ; 56460 ; 55 << Total files size
_512: 71550976 ; 69874 ; 68
1024: 103973888 ; 101537 ; 99
2048: 169820160 ; 165840 ; 161
4096: 298225664 ; 291236 ; 284
1: 89/55=1,6
_512: 102/68=1,5
1024: 133/99=1,3
2048: 194/161=1,2
4096: 319/284=1,1
combo (alloc4096before/alloc512after): 319/68=4,7 !!!
After (optiPNG -o2):
------------------
Total files: 70776
Cluster Allocated size:
size: bytes Kb Mb
1: 43066470 ; 42057 ; 41 << Total files size
_512: 68900864 ; 67286 ; 65
1024: 100706304 ; 98346 ; 96
2048: 167897088 ; 163962 ; 160
4096: 308387840 ; 301160 ; 294 ???
1: 89/41=2,2
_512: 102/65=1,6
1024: 133/96=1,4
2048: 194/160=1,2
4096: 319/294=1,1
combo (alloc4096before/alloc512after): 319/65=4,9 !!!
After (optiPNG -o7):
------------------
Total files : 70776
Cluster Allocated size:
size: bytes Kb Mb
1: 43048257 ; 42039 ; 41 << Total files size
_512: 68879360 ; 67265 ; 65
1024: 100684800 ; 98325 ; 96
2048: 167882752 ; 163948 ; 160
4096: 308375552 ; 301148 ; 294
1: 89/41=2,2
_512: 102/65=1,6
1024: 133/96=1,4
2048: 194/160=1,2
4096: 319/294=1,1
combo (alloc4096before/alloc512after): 319/65=4,9 !!!
Конкретно по картам можно сказать следующее:
- есть карты которые плохо сжимаются сами по себе (OSMmap Mapnik); игра с размером кластера ничего не меняет.
- карты Garmin QuickDraw показали хорошую сжимаемость, даже при увеличении размера кластера разница хорошо заметна.
- карта navionics_sonarchart , на смотря на хорошую сжимаемость, при размере кластера 4К после сжатия заняла на диске практически столько же места, сколько и ДО

- удивила карта yahyb: как и предыдущая карта, при размере кластера = 4К сжимать её оказалось невыгодно; НО зато после одновременного сжатия и уменьшения размера кластера объём занятого ею места на диске уменьшается почти в 5 раз !!!
Понятно, что ради базы данных никто не будет переформатировать диск с меньшим размером кластера. Win 10, кстати позволяет при форматировании задать размер кластера NTFS диска от 512 байт.
Вся надежда на хранение мелких тайлов в базах данных.
