Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Update the tool/cg_anno.tcl script to give a summary of cycle counts by canonical source file name. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
254a83bf30c15d6a355db309ccb97a87 |
User & Date: | drh 2016-12-08 18:36:19.891 |
Context
2016-12-08
| ||
19:04 | Fix a minor error in the cg_anno.tcl script causing the cycles-per-file counts to be miscomputed. (check-in: b26df26e18 user: drh tags: trunk) | |
18:36 | Update the tool/cg_anno.tcl script to give a summary of cycle counts by canonical source file name. (check-in: 254a83bf30 user: drh tags: trunk) | |
01:38 | More changes to take advantage of the sqlite3VdbeAppendP4() method. (check-in: 83bc5e40af user: drh tags: trunk) | |
Changes
Changes to tool/cg_anno.tcl.
1 2 3 4 | #!/usr/bin/tclsh # # A wrapper around cg_annotate that sets appropriate command-line options # and rearranges the output so that annotated files occur in a consistent | | > > > > > > > > > | > > > > > > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | #!/usr/bin/tclsh # # A wrapper around cg_annotate that sets appropriate command-line options # and rearranges the output so that annotated files occur in a consistent # sorted order. Used by the speed-check.tcl script. # set in [open "|cg_annotate --show=Ir --auto=yes --context=40 $argv" r] set dest ! set out(!) {} set linenum 0 set cntlines 0 ;# true to remember cycle counts on each line set seenSqlite3 0 ;# true if we have seen the sqlite3.c file while {![eof $in]} { set line [string map {\t { }} [gets $in]] if {[regexp {^-- Auto-annotated source: (.*)} $line all name]} { set dest $name if {[string match */sqlite3.c $dest]} { set cntlines 1 set seenSqlite3 1 } else { set cntlines 0 } } elseif {[regexp {^-- line (\d+) ------} $line all ln]} { set line [lreplace $line 2 2 {#}] set linenum [expr {$ln-1}] } elseif {[regexp {^The following files chosen for } $line]} { set dest ! } append out($dest) $line\n if {$cntlines && [regexp { *([0-9,]+) } $line all x]} { incr linenum if {[regexp {^ *([0-9,]+) } $line all x]} { set x [string map {, {}} $x] set cycles($linenum) $x } } } foreach x [lsort [array names out]] { puts $out($x) } # If the sqlite3.c file has been seen, then output a summary of the # cycle counts for each file that went into making up sqlite3.c # if {$seenSqlite3} { close $in set in [open sqlite3.c] set linenum 0 set fn sqlite3.c set pattern1 {^/\*+ Begin file ([^ ]+) \*} set pattern2 {^/\*+ Continuing where we left off in ([^ ]+) \*} while {![eof $in]} { set line [gets $in] incr linenum if {[regexp $pattern1 $line all newfn]} { set fn $newfn } elseif {[regexp $pattern2 $line all newfn]} { set fn $newfn } elseif {[info exists cycles($linenum)]} { incr fcycles($fn) $cycles($linenum) } } close $in puts {**********************************************************************} set lx {} set sum 0 foreach {fn cnt} [array get fcycles] { lappend lx [list $cnt $fn] incr sum $cnt } puts [format {%20s %14d %8.3f%%} TOTAL $sum 100] foreach entry [lsort -index 0 -integer -decreasing $lx] { foreach {cnt fn} $entry break puts [format {%20s %14d %8.3f%%} $fn $cnt [expr {$cnt*100.0/$sum}]] } } |