Changeset 1215 in josm


Ignore:
Timestamp:
Jan 8, 2009 9:39:30 PM (4 years ago)
Author:
ulfl
Message:

add a mappaint.profiler option, it enables console output of the primitive drawing time used

hopefully, this helps finding performance bottlenecks and aids users to tweak performance

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java

    r1208 r1215  
    767767    // Shows areas before non-areas 
    768768    public void visitAll(DataSet data, Boolean virtual) { 
     769         
     770                boolean profiler = Main.pref.getBoolean("mappaint.profiler",false); 
     771                long profilerStart = java.lang.System.currentTimeMillis(); 
     772                long profilerLast = profilerStart; 
     773                int profilerN; 
     774                if(profiler) 
     775                { 
     776                        System.out.println("Mappaint Profiler"); 
     777                } 
     778                 
    769779        getSettings(virtual); 
    770780        untaggedColor = Main.pref.getColor(marktr("untagged"),Color.GRAY); 
     
    785795        selectedCall = false; 
    786796 
     797                if(profiler)  
     798                { 
     799                        System.out.format("Prepare  : %4dms\n", (java.lang.System.currentTimeMillis()-profilerLast)); 
     800                        profilerLast = java.lang.System.currentTimeMillis(); 
     801                } 
     802                 
    787803        if (fillAreas && styles.hasAreas()) { 
    788804            Collection<Way> noAreaWays = new LinkedList<Way>(); 
    789805 
     806                        /*** RELATIONS ***/ 
     807                        profilerN = 0; 
    790808            for (final Relation osm : data.relations) 
    791809            { 
    792810                if(!osm.deleted && !osm.incomplete) 
     811                                { 
    793812                    osm.visit(this); 
    794             } 
    795  
     813                                        profilerN++; 
     814                                } 
     815            } 
     816 
     817                        if(profiler)  
     818                        { 
     819                                System.out.format("Relations: %4dms, n=%d\n", (java.lang.System.currentTimeMillis()-profilerLast), profilerN); 
     820                                profilerLast = java.lang.System.currentTimeMillis(); 
     821                        } 
     822                         
     823                        /*** AREAS ***/ 
     824                        profilerN = 0; 
    796825            for (final Way osm : data.ways) 
    797826            { 
     
    799828                { 
    800829                    if(styles.isArea((Way)osm) && !alreadyDrawnAreas.contains(osm)) 
     830                    { 
    801831                        osm.visit(this); 
    802                     else 
     832                        profilerN++; 
     833                    } else 
    803834                        noAreaWays.add((Way)osm); 
    804835                } 
    805836            } 
    806837            alreadyDrawnAreas = null; 
    807  
     838                         
     839                        if(profiler)  
     840                        { 
     841                                System.out.format("Areas    : %4dms, n=%d\n",  (java.lang.System.currentTimeMillis()-profilerLast), profilerN); 
     842                                profilerLast = java.lang.System.currentTimeMillis(); 
     843                        } 
     844 
     845                        /*** WAYS ***/ 
     846                        profilerN = 0; 
    808847            fillAreas = false; 
    809848            for (final OsmPrimitive osm : noAreaWays) 
     849            { 
    810850                osm.visit(this); 
     851                profilerN++; 
     852            } 
     853                         
     854                        if(profiler)  
     855                        { 
     856                                System.out.format("Ways     : %4dms, n=%d\n", (java.lang.System.currentTimeMillis()-profilerLast), profilerN); 
     857                                profilerLast = java.lang.System.currentTimeMillis(); 
     858                        } 
    811859        } 
    812860        else 
    813861        { 
     862                        /*** WAYS (filling disabled)  ***/                       
     863                        profilerN = 0; 
    814864            for (final OsmPrimitive osm : data.ways) 
    815865                if (!osm.incomplete && !osm.deleted && !osm.selected) 
     866                                { 
    816867                    osm.visit(this); 
    817         } 
    818  
     868                    profilerN++; 
     869                                } 
     870                                         
     871                        if(profiler)  
     872                        { 
     873                                System.out.format("Ways     : %4dms, n=%d\n", (java.lang.System.currentTimeMillis()-profilerLast), profilerN); 
     874                                profilerLast = java.lang.System.currentTimeMillis(); 
     875                        } 
     876        } 
     877 
     878                /*** SELECTED  ***/ 
    819879        selectedCall = true; 
     880                profilerN = 0; 
    820881        for (final OsmPrimitive osm : data.getSelected()) { 
    821882            if (!osm.incomplete && !osm.deleted 
    822883            && !(osm instanceof Node) && !alreadyDrawn.contains(osm)) 
     884                        { 
    823885                osm.visit(this); 
    824         } 
    825  
     886                                profilerN++; 
     887                        } 
     888        } 
     889                 
     890                if(profiler)  
     891                { 
     892                        System.out.format("Selected : %4dms, n=%d\n", (java.lang.System.currentTimeMillis()-profilerLast), profilerN); 
     893                        profilerLast = java.lang.System.currentTimeMillis(); 
     894                } 
     895 
     896                /*** DISPLAY CACHED SEGMENTS (WAYS) NOW ***/ 
    826897        displaySegments(); 
    827  
     898                /*System.out.println("display segments " + (java.lang.System.currentTimeMillis()-profilerLast) + "ms"); 
     899                profilerLast = java.lang.System.currentTimeMillis();*/ 
     900 
     901                /*** NODES ***/ 
     902                profilerN = 0; 
    828903        for (final OsmPrimitive osm : data.nodes) 
    829904            if (!osm.incomplete && !osm.deleted && !alreadyDrawn.contains(osm)) 
     905            { 
    830906                osm.visit(this); 
     907                                profilerN++; 
     908                        } 
     909                                 
     910                if(profiler)  
     911                { 
     912                        System.out.format("Nodes    : %4dms, n=%d\n", (java.lang.System.currentTimeMillis()-profilerLast), profilerN); 
     913                        profilerLast = java.lang.System.currentTimeMillis(); 
     914                } 
    831915 
    832916        alreadyDrawn = null; 
    833917 
     918                /*** VIRTUAL  ***/ 
    834919        if (virtualNodeSize != 0) 
    835920        { 
     921                        profilerN = 0; 
    836922            currentColor = nodeColor; 
    837923            for (final OsmPrimitive osm : data.ways) 
    838924                if (!osm.incomplete && !osm.deleted) 
     925                                { 
    839926                    visitVirtual((Way)osm); 
    840             displaySegments(null); 
    841         } 
     927                                        profilerN++; 
     928                                } 
     929                                         
     930                        if(profiler)  
     931                        { 
     932                                System.out.format("Virtual  : %4dms, n=%d\n", (java.lang.System.currentTimeMillis()-profilerLast), profilerN); 
     933                                profilerLast = java.lang.System.currentTimeMillis(); 
     934                        } 
     935             
     936                        displaySegments(null); 
     937                        /*System.out.println("display segments virtual " + (java.lang.System.currentTimeMillis()-profilerLast) + "ms"); 
     938                        profilerLast = java.lang.System.currentTimeMillis();*/ 
     939        } 
     940                 
     941                if(profiler)  
     942                { 
     943                        System.out.format("All      : %4dms\n", (profilerLast-profilerStart)); 
     944                } 
    842945    } 
    843946 
Note: See TracChangeset for help on using the changeset viewer.