contrib/xml.rnc
author Gregory Szorc <gregory.szorc@gmail.com>
Sun, 20 Nov 2016 16:56:21 -0800
changeset 30461 d195fa651b51
parent 10161 3acfb69a4729
permissions -rw-r--r--
bdiff: don't check border condition in loop This is pretty much a copy of d500ddae7494, just to a different loop. The condition `p == plast` (`plast == a + len - 1`) was only true on the final iteration of the loop. So it was wasteful to check for it on every iteration. We decrease the iteration count by 1 and add an explicit check for `p == plast` after the loop. Again, we see modest wins. From the mozilla-unified repository: $ perfbdiff -m 3041e4d59df2 ! wall 0.035502 comb 0.040000 user 0.040000 sys 0.000000 (best of 100) ! wall 0.030480 comb 0.030000 user 0.030000 sys 0.000000 (best of 100) $ perfbdiff 0e9928989e9c --alldata --count 100 ! wall 4.097394 comb 4.100000 user 4.100000 sys 0.000000 (best of 3) ! wall 3.597798 comb 3.600000 user 3.600000 sys 0.000000 (best of 3) The 2nd example throws a total of ~3.3GB of data at bdiff. This change increases the throughput from ~811 MB/s to ~924 MB/s.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10161
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
     1
# RelaxNG schema for "xml" log style
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
     2
# Inspired by Subversion's XML log format.
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
     3
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
     4
start = log
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
     5
node.type = xsd:string  {minLength = "40" maxLength = "40"}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
     6
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
     7
log = element log { logentry+ }
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
     8
logentry = element logentry {
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
     9
    logentry.attlist,
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    10
    branch*, tag*, hgparent*,
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    11
    author, date,
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    12
    msg, paths?, copies?, extra*
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    13
}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    14
logentry.attlist =
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    15
    attribute revision {xsd:nonNegativeInteger}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    16
  & attribute node {node.type}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    17
branch = element branch { text }
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    18
tag = element tag { text }
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    19
hgparent = element parent {hgparent.attlist, text}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    20
hgparent.attlist =
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    21
    attribute revision {xsd:integer {minInclusive = "-1"} }
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    22
  & attribute node {node.type}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    23
author = element author { author.attlist, text }
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    24
author.attlist =
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    25
    attribute email {text}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    26
date = element date {xsd:dateTime}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    27
msg = element msg {msg.attlist, text}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    28
msg.attlist =
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    29
    attribute xml:space {"preserve"}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    30
paths = element paths { path* }
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    31
path = element path { path.attlist, text }
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    32
path.attlist =
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    33
    # Action: (A)dd, (M)odify, (R)emove
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    34
    attribute action {"A"|"M"|"R"}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    35
copies = element copies { copy+ }
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    36
copy = element copy { copy.attlist, text }
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    37
copy.attlist =
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    38
    attribute source {text}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    39
extra = element extra {extra.attlist, text}
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    40
extra.attlist =
3acfb69a4729 Added RelaxNG schema for hg log XML output format
Robert Bachmann <rbachm@gmail.com>
parents:
diff changeset
    41
    attribute key {text}