View Issue Details

IDProjectCategoryView StatusLast Update
0001832Double CommanderGraphical user interfacepublic2018-10-20 15:18
ReporterCryHam Assigned To 
PriorityhighSeverityminorReproducibilityalways
Status closedResolutionfixed 
ProjectionnoneETAnone 
Product Version1.0.0 (trunk)Product Buildtrunk@7564 
Summary0001832: Very slow File Filters - 4 seconds delay to view 24000 files with 123 file filters.
DescriptionThis happens when I enter a directory which has a lot of files, few thousands at least. And only happens with very many file filters, I have about 123 filters (colors) and 460 extensions (patterns).
To put it short: with many file filters processing is a lot slower (like 10 times).

I did a few tests (using my build of current trunk):

When I enter a directory with 24000 files without any file filters defined, I wait about 1 second for the view to show (on a SSD). This is also the same time Total Commander needs and is okay.

If I have only *.jpg files and their file filter is first in list, the issue is not visible at all.

But entering this directory with 24000 files, with my list of file filters (in attachment) causes a huge delay of 4 seconds to show the view.

This is unacceptable for me. I am pretty sure that significant optimizations can be made to improve this (maybe easily) and reduce the time to probably even 1 second.
Total Commander allows only 252 file filters, but even with my list (nearly the same) the delay is still 1 second. So, it stays the same, recognizing lots of file filters in file names surely is optimal there.

Current algorithm is also very dependent on which filters are used and how far in list are they. If nothing is found it will take a lot more time compared to when first few filters were used. And the delay grows with more filters in list. My own bigger list causes even 7 seconds delay.

Please optimize file filters to reduce the delay.
Steps To ReproduceDownload attachment with my <FileFilters> section for doublecmd.xml,
replace that section in your doublecmd.xml file.
Enter a directiory with at least 10000 files. Best with random extensions.
Experience a few seconds delay.
TagsNo tags attached.
Attached Files
colors.xml (25,852 bytes)   
<FileFilters>
    <Filter>
        <Name>*.jpg;*.jpeg;*.jpe;</Name>
        <FileMasks>*.jpg;*.jpeg;*.jpe;</FileMasks>
        <Color>16765695</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.bat;*.cmd;*.sh;</Name>
        <FileMasks>*.bat;*.cmd;*.sh;</FileMasks>
        <Color>7339894</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.exe;*.com;</Name>
        <FileMasks>*.exe;*.com;</FileMasks>
        <Color>4128593</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.dll;*.so*;*.hex;</Name>
        <FileMasks>*.dll;*.so*;*.hex;</FileMasks>
        <Color>7653888</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.mkv;*.ts;*.vob;</Name>
        <FileMasks>*.mkv;*.ts;*.vob;</FileMasks>
        <Color>14443402</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.avi;*.mpg;*.mpeg;*.mpe;</Name>
        <FileMasks>*.avi;*.mpg;*.mpeg;*.mpe;</FileMasks>
        <Color>13922955</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.wmv;*.mp4;*.webm;</Name>
        <FileMasks>*.wmv;*.mp4;*.webm;</FileMasks>
        <Color>12682126</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.flv;*.rm;*.rmvb;*.asf;*.mov;*.3gp;</Name>
        <FileMasks>*.flv;*.rm;*.rmvb;*.asf;*.mov;*.3gp;</FileMasks>
        <Color>10910333</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.h;*.hpp;*.hxx;*Designer.cs;</Name>
        <FileMasks>*.h;*.hpp;*.hxx;*Designer.cs;</FileMasks>
        <Color>16742777</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.c;*.cpp;*.cxx;*.cc;*.c++;*.ino;</Name>
        <FileMasks>*.c;*.cpp;*.cxx;*.cc;*.c++;*.ino;</FileMasks>
        <Color>16755400</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.cs;*.java;*.py;*.vbs;*.lua;*.json;*.mm;</Name>
        <FileMasks>*.cs;*.java;*.py;*.vbs;*.lua;*.json;*.mm;</FileMasks>
        <Color>16747689</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.lib;*.ld;*.cl;</Name>
        <FileMasks>*.lib;*.ld;*.cl;</FileMasks>
        <Color>15369373</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.a;*.la;</Name>
        <FileMasks>*.a;*.la;</FileMasks>
        <Color>14443402</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.php;*.asp;*.aspx;*.ascx;</Name>
        <FileMasks>*.php;*.asp;*.aspx;*.ascx;</FileMasks>
        <Color>14910145</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.pl;*.vb;*.jsp;*.jspx;*.d;</Name>
        <FileMasks>*.pl;*.vb;*.jsp;*.jspx;*.d;</FileMasks>
        <Color>11897287</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.sql;*.rb;*.in;</Name>
        <FileMasks>*.sql;*.rb;*.in;</FileMasks>
        <Color>9150168</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.vert;*.glsl;*.vsh;*.cg;*.shd;*.glsles;</Name>
        <FileMasks>*.vert;*.glsl;*.vsh;*.cg;*.shd;*.glsles;</FileMasks>
        <Color>1164031</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.frag;*.hlsl;*.psh;*.fx;*.shader;*.program;</Name>
        <FileMasks>*.frag;*.hlsl;*.psh;*.fx;*.shader;*.program;</FileMasks>
        <Color>1170431</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>.git*;.hg*;</Name>
        <FileMasks>.git*;.hg*;</FileMasks>
        <Color>11690849</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>.svn;cvs;</Name>
        <FileMasks>.svn;cvs;</FileMasks>
        <Color>11690849</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>*.obj;*.class;*.o;*.elf;*.less;</Name>
        <FileMasks>*.obj;*.class;*.o;*.elf;*.less;</FileMasks>
        <Color>12875833</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.m;*.tlh;*.def;*.idl;*.odl;</Name>
        <FileMasks>*.m;*.tlh;*.def;*.idl;*.odl;</FileMasks>
        <Color>11770624</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>cmakelists.txt;*.cmake;</Name>
        <FileMasks>cmakelists.txt;*.cmake;</FileMasks>
        <Color>12682561</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>cmake*.txt;*.make;*.*cache;</Name>
        <FileMasks>cmake*.txt;*.make;*.*cache;</FileMasks>
        <Color>12617325</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.lst;*.lss;</Name>
        <FileMasks>*.lst;*.lss;</FileMasks>
        <Color>13998956</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.patch;*.diff;</Name>
        <FileMasks>*.patch;*.diff;</FileMasks>
        <Color>16090219</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.pdb;</Name>
        <FileMasks>*.pdb;</FileMasks>
        <Color>15439440</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.rc;*.res;*.resx;*.inl;*.resources;*.qrc;*.blend?;</Name>
        <FileMasks>*.rc;*.res;*.resx;*.inl;*.resources;*.qrc;*.blend?;</FileMasks>
        <Color>10369155</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.ncb;*.pch;*.ilk;*.sdf;</Name>
        <FileMasks>*.ncb;*.pch;*.ilk;*.sdf;</FileMasks>
        <Color>11154783</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>ipch;</Name>
        <FileMasks>ipch;</FileMasks>
        <Color>11154783</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>*.user;*.suo;</Name>
        <FileMasks>*.user;*.suo;</FileMasks>
        <Color>12537936</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.idb;*.exp;*.aps;*.sbr;*.tlog;</Name>
        <FileMasks>*.idb;*.exp;*.aps;*.sbr;*.tlog;</FileMasks>
        <Color>10702928</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.linkinfo;*.filters;*.opensdf;*.internal;thumbs.db;</Name>
        <FileMasks>*.linkinfo;*.filters;*.opensdf;*.internal;thumbs.db;</FileMasks>
        <Color>10571856</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.dsp;*.dsw;*.bpr;*.cbp;*.workspace;*.desktop;</Name>
        <FileMasks>*.dsp;*.dsw;*.bpr;*.cbp;*.workspace;*.desktop;</FileMasks>
        <Color>7171420</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.bak;*.bash;*.tmp;*.dmp;*.map;*.sym;</Name>
        <FileMasks>*.bak;*.bash;*.tmp;*.dmp;*.map;*.sym;</FileMasks>
        <Color>8421504</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.old;*.default;makefile*;*.mk;</Name>
        <FileMasks>*.old;*.default;makefile*;*.mk;</FileMasks>
        <Color>10395294</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.sln;*.pro;*.dev;</Name>
        <FileMasks>*.sln;*.pro;*.dev;</FileMasks>
        <Color>16771827</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.vcproj;*.vcxproj;*.vsix;*.ino;</Name>
        <FileMasks>*.vcproj;*.vcxproj;*.vsix;*.ino;</FileMasks>
        <Color>16769226</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.csproj;*.sldprt;</Name>
        <FileMasks>*.csproj;*.sldprt;</FileMasks>
        <Color>16765098</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.png;</Name>
        <FileMasks>*.png;</FileMasks>
        <Color>12093879</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.bmp;*.pcx;*.tga;*.rgb;</Name>
        <FileMasks>*.bmp;*.pcx;*.tga;*.rgb;</FileMasks>
        <Color>12616447</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.gif;*.tif;*.svg;*.psd;*.pdn;</Name>
        <FileMasks>*.gif;*.tif;*.svg;*.psd;*.pdn;</FileMasks>
        <Color>6776798</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.ico;*.cur;*.ani;*.xcf;</Name>
        <FileMasks>*.ico;*.cur;*.ani;*.xcf;</FileMasks>
        <Color>2697664</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.x;*.mesh;*.x_t;</Name>
        <FileMasks>*.x;*.mesh;*.x_t;</FileMasks>
        <Color>8388863</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>model*;</Name>
        <FileMasks>model*;</FileMasks>
        <Color>8388863</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>*.blend;*.max;*.3ds;</Name>
        <FileMasks>*.blend;*.max;*.3ds;</FileMasks>
        <Color>11293183</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.dds;</Name>
        <FileMasks>*.dds;</FileMasks>
        <Color>15427307</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>texture*;</Name>
        <FileMasks>texture*;</FileMasks>
        <Color>15427307</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>*.flac;*.ape;*.wv;*.sound;</Name>
        <FileMasks>*.flac;*.ape;*.wv;*.sound;</FileMasks>
        <Color>16756906</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.wav;*.pcm;</Name>
        <FileMasks>*.wav;*.pcm;</FileMasks>
        <Color>16748945</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.mp3;</Name>
        <FileMasks>*.mp3;</FileMasks>
        <Color>16756250</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.ogg;*.mpc;*.wma;</Name>
        <FileMasks>*.ogg;*.mpc;*.wma;</FileMasks>
        <Color>14325046</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.mod;*.it;*.xm;*.stm;*.s3m;</Name>
        <FileMasks>*.mod;*.it;*.xm;*.stm;*.s3m;</FileMasks>
        <Color>13998956</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.m3u*;*.cue;*.plc;*.pls;</Name>
        <FileMasks>*.m3u*;*.cue;*.plc;*.pls;</FileMasks>
        <Color>16087391</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.htm;*.html;*.shtml;*.mht;</Name>
        <FileMasks>*.htm;*.html;*.shtml;*.mht;</FileMasks>
        <Color>16284673</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.js;*.css;</Name>
        <FileMasks>*.js;*.css;</FileMasks>
        <Color>14053907</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.xsd;*.xdr;*.xsl;*.xslt;</Name>
        <FileMasks>*.xsd;*.xdr;*.xsl;*.xslt;</FileMasks>
        <Color>13421568</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.ps*;</Name>
        <FileMasks>*.ps*;</FileMasks>
        <Color>13421568</Color>
        <Attributes></Attributes>
    </Filter>
    <Filter>
        <Name>*.xml;*.yml;*.yaml;*.xaml;*.qml;*.layout;</Name>
        <FileMasks>*.xml;*.yml;*.yaml;*.xaml;*.qml;*.layout;</FileMasks>
        <Color>16763788</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.url;*.rdp;descript.ion;</Name>
        <FileMasks>*.url;*.rdp;descript.ion;</FileMasks>
        <Color>16768185</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.set;*.sav;*.settings;*.ui;*.conf;*.part;</Name>
        <FileMasks>*.set;*.sav;*.settings;*.ui;*.conf;*.part;</FileMasks>
        <Color>16760704</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.cfg;*.out;*.config;*.scheme;*.prefs;*.vssettings;*.epf;</Name>
        <FileMasks>*.cfg;*.out;*.config;*.scheme;*.prefs;*.vssettings;*.epf;</FileMasks>
        <Color>11049728</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.mdl;*.dwg;*.dwt;*.dxf;*.mnu;</Name>
        <FileMasks>*.mdl;*.dwg;*.dwt;*.dxf;*.mnu;</FileMasks>
        <Color>2610793</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.lnk;*.cpl;</Name>
        <FileMasks>*.lnk;*.cpl;</FileMasks>
        <Color>13041606</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.dir;*.fnt;*.mat;*.ahk;*.tex;</Name>
        <FileMasks>*.dir;*.fnt;*.mat;*.ahk;*.tex;</FileMasks>
        <Color>13434743</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.msi;*.theme;*.material;*.mtl;*.clr;*.srt;</Name>
        <FileMasks>*.msi;*.theme;*.material;*.mtl;*.clr;*.srt;</FileMasks>
        <Color>11980921</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.iso;*.img;*.bin;*.nrg;*.mdf;*.vdi;*.vhd;</Name>
        <FileMasks>*.iso;*.img;*.bin;*.nrg;*.mdf;*.vdi;*.vhd;</FileMasks>
        <Color>13565928</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.7z;*.rar;*.jar;</Name>
        <FileMasks>*.7z;*.rar;*.jar;</FileMasks>
        <Color>10532608</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.zip;*.cab;*.pak;*.rpm;*.deb;</Name>
        <FileMasks>*.zip;*.cab;*.pak;*.rpm;*.deb;</FileMasks>
        <Color>8623360</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.tar;*.gz;*.tgz;*.bz2;*.ace;*.arj;*.err;</Name>
        <FileMasks>*.tar;*.gz;*.tgz;*.bz2;*.ace;*.arj;*.err;</FileMasks>
        <Color>10460249</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.ini;*.reg;*.dat;*.lng;*.bar;*.raw;*.msc;*.rgs;</Name>
        <FileMasks>*.ini;*.reg;*.dat;*.lng;*.bar;*.raw;*.msc;*.rgs;</FileMasks>
        <Color>8101471</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.log;*.trk;*.properties;</Name>
        <FileMasks>*.log;*.trk;*.properties;</FileMasks>
        <Color>7446392</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.sys;*.drv;*.vxd;*.ocx;*.tlb;*.acm;</Name>
        <FileMasks>*.sys;*.drv;*.vxd;*.ocx;*.tlb;*.acm;</FileMasks>
        <Color>4684874</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.txt;*.nfo;*.diz;*.md;*.wiki;*.markdown;</Name>
        <FileMasks>*.txt;*.nfo;*.diz;*.md;*.wiki;*.markdown;</FileMasks>
        <Color>54698</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.odt;*.doc;*.docx;*.rtf;*.nsi;</Name>
        <FileMasks>*.odt;*.doc;*.docx;*.rtf;*.nsi;</FileMasks>
        <Color>129216</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.inf;*.isu;*.po;*.uninstall;</Name>
        <FileMasks>*.inf;*.isu;*.po;*.uninstall;</FileMasks>
        <Color>52171</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.ods;*.xls;*.xlsx;*.font;*.fon;*.pot;</Name>
        <FileMasks>*.ods;*.xls;*.xlsx;*.font;*.fon;*.pot;</FileMasks>
        <Color>3255982</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.pdf;*.dae;</Name>
        <FileMasks>*.pdf;*.dae;</FileMasks>
        <Color>326143</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.ttf;*.otf;*.ttc;</Name>
        <FileMasks>*.ttf;*.otf;*.ttc;</FileMasks>
        <Color>9958143</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.hlp;*.ch?;</Name>
        <FileMasks>*.hlp;*.ch?;</FileMasks>
        <Color>2993151</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.odp;*.ppt;*.pptx;*.pps;*.cnt;</Name>
        <FileMasks>*.odp;*.ppt;*.pptx;*.pps;*.cnt;</FileMasks>
        <Color>9150168</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.lfm;*.dfm;*.asm;*.s;*manifest;readme;license;</Name>
        <FileMasks>*.lfm;*.dfm;*.asm;*.s;*manifest;readme;license;</FileMasks>
        <Color>39797</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.pas;*.pp;*.v;*.vhd;*.pif;*.csv;</Name>
        <FileMasks>*.pas;*.pp;*.v;*.vhd;*.pif;*.csv;</FileMasks>
        <Color>46774</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.lrt;*.ppu;*.dep;*.dcu;*.dof;*.dcr;</Name>
        <FileMasks>*.lrt;*.ppu;*.dep;*.dcu;*.dof;*.dcr;</FileMasks>
        <Color>27242</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.lpk;*.lpi;*.lps;*.dcp;*.bpl;*.inc;</Name>
        <FileMasks>*.lpk;*.lpi;*.lps;*.dcp;*.bpl;*.inc;</FileMasks>
        <Color>18329</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>*.lpr;*.dpr;*.dpk;*.bpk;*.fig;</Name>
        <FileMasks>*.lpr;*.dpr;*.dpk;*.bpk;*.fig;</FileMasks>
        <Color>28897</Color>
        <Attributes>-*</Attributes>
    </Filter>
    <Filter>
        <Name>CMakeFiles;cmake;</Name>
        <FileMasks>CMakeFiles;cmake;</FileMasks>
        <Color>12617325</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>*debug*;debug*;boot;root;</Name>
        <FileMasks>*debug*;debug*;boot;root;</FileMasks>
        <Color>27242</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>*release*;release*;RelWith*;</Name>
        <FileMasks>*release*;release*;RelWith*;</FileMasks>
        <Color>39797</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>install;</Name>
        <FileMasks>install;</FileMasks>
        <Color>3255982</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>source;src;local;</Name>
        <FileMasks>source;src;local;</FileMasks>
        <Color>16755400</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>lib*;</Name>
        <FileMasks>lib*;</FileMasks>
        <Color>15369373</Color>
        <Attributes>l*</Attributes>
    </Filter>
    <Filter>
        <Name>lib*;Properties;</Name>
        <FileMasks>lib*;Properties;</FileMasks>
        <Color>15369373</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>vid*;vc*;</Name>
        <FileMasks>vid*;vc*;</FileMasks>
        <Color>16676518</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>common;sound*;wav;</Name>
        <FileMasks>common;sound*;wav;</FileMasks>
        <Color>16748945</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>include;inc;</Name>
        <FileMasks>include;inc;</FileMasks>
        <Color>16742777</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>obj;transl*;</Name>
        <FileMasks>obj;transl*;</FileMasks>
        <Color>12875833</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>srv;*script*;lost*;bullet*;</Name>
        <FileMasks>srv;*script*;lost*;bullet*;</FileMasks>
        <Color>13998956</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>css;tpl;audio*;</Name>
        <FileMasks>css;tpl;audio*;</FileMasks>
        <Color>16692869</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>home;tools;</Name>
        <FileMasks>home;tools;</FileMasks>
        <Color>16765098</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>etc;set*;conf*;layout*;</Name>
        <FileMasks>etc;set*;conf*;layout*;</FileMasks>
        <Color>16760704</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>software*;</Name>
        <FileMasks>software*;</FileMasks>
        <Color>16762391</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>theme*;skin*;sky*;</Name>
        <FileMasks>theme*;skin*;sky*;</FileMasks>
        <Color>16756250</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>dist*;network*;</Name>
        <FileMasks>dist*;network*;</FileMasks>
        <Color>15439440</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>sdl*;sfml*;</Name>
        <FileMasks>sdl*;sfml*;</FileMasks>
        <Color>14325046</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>usr;user*;share;cs;</Name>
        <FileMasks>usr;user*;share;cs;</FileMasks>
        <Color>13421568</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>tmp;temp;test*;</Name>
        <FileMasks>tmp;temp;test*;</FileMasks>
        <Color>8421504</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>windows*;*volume*;</Name>
        <FileMasks>windows*;*volume*;</FileMasks>
        <Color>4684874</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>driv*;</Name>
        <FileMasks>driv*;</FileMasks>
        <Color>8101471</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>bin*;builds;plugins;run*;system*;edit*;</Name>
        <FileMasks>bin*;builds;plugins;run*;system*;edit*;</FileMasks>
        <Color>4128593</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>log;nx*;nv*;locale;lang*;qt*;level*;terrain*;</Name>
        <FileMasks>log;nx*;nv*;locale;lang*;qt*;level*;terrain*;</FileMasks>
        <Color>2610793</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>sbin;Program*;Microsoft*;util*;</Name>
        <FileMasks>sbin;Program*;Microsoft*;util*;</FileMasks>
        <Color>7653888</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>var;pack*;</Name>
        <FileMasks>var;pack*;</FileMasks>
        <Color>10532608</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>python*;Redist*;recovery;</Name>
        <FileMasks>python*;Redist*;recovery;</FileMasks>
        <Color>8623360</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>cache;</Name>
        <FileMasks>cache;</FileMasks>
        <Color>11500154</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>sdk*;</Name>
        <FileMasks>sdk*;</FileMasks>
        <Color>16771827</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>example*;sample*;*demo*;</Name>
        <FileMasks>example*;sample*;*demo*;</FileMasks>
        <Color>16765695</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>images;scre*;</Name>
        <FileMasks>images;scre*;</FileMasks>
        <Color>16759778</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>htdocs;wp-content;</Name>
        <FileMasks>htdocs;wp-content;</FileMasks>
        <Color>14910145</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>admin;*power*;preview*;</Name>
        <FileMasks>admin;*power*;preview*;</FileMasks>
        <Color>12093879</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>dev;display;font*;udev;proc;</Name>
        <FileMasks>dev;display;font*;udev;proc;</FileMasks>
        <Color>13565928</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>doc*;mnt;pages;wiki;sys;</Name>
        <FileMasks>doc*;mnt;pages;wiki;sys;</FileMasks>
        <Color>129216</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>opt;proj*;depend*;object*;</Name>
        <FileMasks>opt;proj*;depend*;object*;</FileMasks>
        <Color>326143</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>media;data;shade*;effect*;</Name>
        <FileMasks>media;data;shade*;effect*;</FileMasks>
        <Color>1825532</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>boost*;addon*;module*;</Name>
        <FileMasks>boost*;addon*;module*;</FileMasks>
        <Color>7918334</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>run*;gui*;gtk*;</Name>
        <FileMasks>run*;gui*;gtk*;</FileMasks>
        <Color>2993151</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>Dir</Name>
        <FileMasks>*;</FileMasks>
        <Color>16774090</Color>
        <Attributes>d*</Attributes>
    </Filter>
    <Filter>
        <Name>Link</Name>
        <FileMasks>*;</FileMasks>
        <Color>13041606</Color>
        <Attributes>l*</Attributes>
    </Filter>
    <Filter>
        <Name>Exe</Name>
        <FileMasks>*;</FileMasks>
        <Color>4128593</Color>
        <Attributes>-*x*</Attributes>
    </Filter>
</FileFilters>
colors.xml (25,852 bytes)   
Fixed in Revision7720
Operating systemWindows
WidgetsetWin32
Architecture64-bit

Activities

CryHam

2017-08-02 21:50

reporter   ~0002314

Perhaps this could speed it up:
- sorting list first by extension
- for each file: go through file filters until one matches, saving which one did
- for next file: first trying saved file filter, if it matched, go to next file
(if not, go through rest of file filters, should usually only happen on extension change)
- sorting again by what user has picked, but using saved colors
Just a draft, probably not exact, but may be faster.

Alexx2000

2017-08-07 07:48

administrator   ~0002315

Such algorithm cannot be used. Because coloring can be doing using other parameters (time, attributes, etc.), not only by extension.

CryHam

2017-10-16 17:32

reporter   ~0002379

I tested a recent build of doublecmd-0.9.0.r7833.x86_64-win64.7z 2017.10.07 09:16:30.
This works now way faster (about 2x) and I think it's fixed.

When entering a directory (actually Ctrl-B flat view) of 68k files: old version needs 18sec to show list, and new version about 9sec.
For a smaller directory of 23k files new takes about 3sec and old 6sec.
This is great, thank you.

w2017

2018-10-20 15:18

reporter   ~0002805

OP confirmed it fixed

Issue History

Date Modified Username Field Change
2017-05-14 14:01 CryHam New Issue
2017-05-14 14:01 CryHam File Added: colors.xml
2017-08-02 21:50 CryHam Note Added: 0002314
2017-08-07 07:40 Alexx2000 Fixed in Revision => 7720
2017-08-07 07:48 Alexx2000 Note Added: 0002315
2017-08-07 07:48 Alexx2000 Status new => acknowledged
2017-10-16 17:32 CryHam Note Added: 0002379
2018-10-20 15:18 w2017 Note Added: 0002805
2018-10-20 15:18 w2017 Status acknowledged => closed
2018-10-20 15:18 w2017 Resolution open => fixed