Ticket #19875: 19875.3.patch

File 19875.3.patch, 4.7 KB (added by GerdP, 5 years ago)

report timings when style is inactive

  • src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java

     
    356356            final MapCSSStyleSource source = new MapCSSStyleSource("");
    357357            final MapCSSParser preprocessor = new MapCSSParser(css, MapCSSParser.LexicalState.PREPROCESSOR);
    358358            try (StringReader mapcss = new StringReader(preprocessor.pp_root(source))) {
    359                 new MapCSSParser(mapcss, MapCSSParser.LexicalState.DEFAULT).sheet(source);
     359                new MapCSSParser(mapcss, MapCSSParser.LexicalState.DEFAULT).sheet(source, false);
    360360            }
    361361            // Ignore "meta" rule(s) from external rules of JOSM wiki
    362362            source.removeMetaRules();
  • src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj

     
    541541/**
    542542 * entry point for the main parser
    543543 * @param sheet MapCSS style source
     544 * @param metadataOnly if true, stop reading after first rule that is not a meta rule
    544545 * @throws ParseException in case of parsing error
    545546 */
    546 void sheet(MapCSSStyleSource sheet):
     547void sheet(MapCSSStyleSource sheet, boolean metadataOnly):
    547548{
    548549}
    549550{
     
    552553    (
    553554        try {
    554555            rule() w()
     556            {
     557            if (metadataOnly && !sheet.rules.isEmpty()) {
     558                // get first selector of last rule
     559                Selector sel = sheet.rules.get(sheet.rules.size() - 1).selectors.get(0);
     560                if (!(sel instanceof GeneralSelector) || !Selector.BASE_META.equals(sel.getBase())) {
     561                    return;
     562                }
     563            }
     564            }
    555565        } catch (MapCSSException mex) {
    556566            Logging.error(mex);
    557567            error_skipto(RBRACE, mex);
  • src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java

     
    5151import org.openstreetmap.josm.tools.JosmRuntimeException;
    5252import org.openstreetmap.josm.tools.LanguageInfo;
    5353import org.openstreetmap.josm.tools.Logging;
     54import org.openstreetmap.josm.tools.Stopwatch;
    5455import org.openstreetmap.josm.tools.Utils;
    5556
    5657/**
     
    156157    public void loadStyleSource(boolean metadataOnly) {
    157158        STYLE_SOURCE_LOCK.writeLock().lock();
    158159        try {
     160            Stopwatch stopwatch = Stopwatch.createStarted();
    159161            init();
    160162            rules.clear();
    161163            ruleIndex.clear();
     
    168170
    169171                    // do the actual mapcss parsing
    170172                    try (Reader in2 = new StringReader(preprocessor.pp_root(this))) {
    171                         new MapCSSParser(in2, MapCSSParser.LexicalState.DEFAULT).sheet(this);
     173                        new MapCSSParser(in2, MapCSSParser.LexicalState.DEFAULT).sheet(this, metadataOnly);
    172174                    }
    173175
    174176                    loadMeta();
     
    194196                Logging.error(e);
    195197                logError(new ParseException(e.getMessage())); // allow e to be garbage collected, it links to the entire token stream
    196198            }
    197             if (metadataOnly) {
    198                 return;
     199
     200            if (!metadataOnly) {
     201                // optimization: filter rules for different primitive types
     202                ruleIndex.buildIndex(rules.stream());
     203                loaded = true;
    199204            }
    200             // optimization: filter rules for different primitive types
    201             ruleIndex.buildIndex(rules.stream());
    202             loaded = true;
     205            Logging.debug(stopwatch.toString("Parsing map style " + url));
    203206        } finally {
    204207            STYLE_SOURCE_LOCK.writeLock().unlock();
    205208        }
  • scripts/TagInfoExtract.java

     
    354354                MapCSSParser parser = new MapCSSParser(reader, MapCSSParser.LexicalState.DEFAULT);
    355355                styleSource = new MapCSSStyleSource("");
    356356                styleSource.url = "";
    357                 parser.sheet(styleSource);
     357                parser.sheet(styleSource, false);
    358358            }
    359359        }
    360360