public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* comparing DejaGNU results
@ 2006-05-31 18:13 James Lemke
  2006-05-31 18:25 ` Joe Buck
                   ` (2 more replies)
  0 siblings, 3 replies; 20+ messages in thread
From: James Lemke @ 2006-05-31 18:13 UTC (permalink / raw)
  To: gcc

[-- Attachment #1: Type: text/plain, Size: 1006 bytes --]

I wanted some mechanical way to compare the output of dejagnu runs
between releases, etc.  I asked a few people at the GCC Summit last year
what they used or knew about.  Not much came to light, so I ended up
writing something of my own.

It's a shell script I've been using on Linux with only trivial changes
since December.  The one tricky part was dealing with lines in the
results file that are identical.  I made the rash assumption that the
relative order wouldn't change between runs and that seems to hold.  The
script works well although it isn't blazingly fast.

My current version is attached.  If others find it useful I can
contribute it.  Comments and suggestions are welcome.

Typical invocation is something like:
dg-cmp-results.sh -v "" gcc-20060328.sum gcc-20060510.sum |less
for the first variation in the files, or
dg-cmp-results.sh -v arm-sim gcc-20060328.sum gcc-20060510.sum |less
for a specific variation.

Cheers,
Jim.

-- 
Jim Lemke   jwlemke@wasabisystems.com   Orillia, Ontario

[-- Attachment #2: Type: application/x-shellscript, Size: 6646 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-05-31 18:13 comparing DejaGNU results James Lemke
@ 2006-05-31 18:25 ` Joe Buck
  2006-05-31 18:28   ` Jeffrey Law
  2006-06-01  1:14 ` Jim Wilson
  2006-06-01  2:43 ` Mike Stump
  2 siblings, 1 reply; 20+ messages in thread
From: Joe Buck @ 2006-05-31 18:25 UTC (permalink / raw)
  To: James Lemke; +Cc: gcc

On Wed, May 31, 2006 at 02:13:44PM -0400, James Lemke wrote:
> I wanted some mechanical way to compare the output of dejagnu runs
> between releases, etc.  I asked a few people at the GCC Summit last year
> what they used or knew about.  Not much came to light, so I ended up
> writing something of my own.

I thought that Jeff Law had something that compared .sum files back when
he was RM.  The description of what you wrote sounds similar.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-05-31 18:25 ` Joe Buck
@ 2006-05-31 18:28   ` Jeffrey Law
  2006-05-31 18:33     ` James Lemke
  2006-06-01  0:56     ` Ben Elliston
  0 siblings, 2 replies; 20+ messages in thread
From: Jeffrey Law @ 2006-05-31 18:28 UTC (permalink / raw)
  To: Joe Buck; +Cc: James Lemke, gcc

On Wed, 2006-05-31 at 11:25 -0700, Joe Buck wrote:
> On Wed, May 31, 2006 at 02:13:44PM -0400, James Lemke wrote:
> > I wanted some mechanical way to compare the output of dejagnu runs
> > between releases, etc.  I asked a few people at the GCC Summit last year
> > what they used or knew about.  Not much came to light, so I ended up
> > writing something of my own.
> 
> I thought that Jeff Law had something that compared .sum files back when
> he was RM.  The description of what you wrote sounds similar.
Don't we have a comparison script in the "contrib" subdirectory?  

Jeff

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-05-31 18:28   ` Jeffrey Law
@ 2006-05-31 18:33     ` James Lemke
  2006-05-31 18:45       ` Joe Buck
  2006-06-01  0:56     ` Ben Elliston
  1 sibling, 1 reply; 20+ messages in thread
From: James Lemke @ 2006-05-31 18:33 UTC (permalink / raw)
  To: law; +Cc: Joe Buck, gcc

On Wed, 2006-05-31 at 12:27 -0600, Jeffrey Law wrote:
> On Wed, 2006-05-31 at 11:25 -0700, Joe Buck wrote:
> > On Wed, May 31, 2006 at 02:13:44PM -0400, James Lemke wrote:
> > > I wanted some mechanical way to compare the output of dejagnu runs
> > > between releases, etc.  I asked a few people at the GCC Summit last year
> > > what they used or knew about.  Not much came to light, so I ended up
> > > writing something of my own.
> > 
> > I thought that Jeff Law had something that compared .sum files back when
> > he was RM.  The description of what you wrote sounds similar.
> Don't we have a comparison script in the "contrib" subdirectory?  
There is contrib/compare_tests although dg-cmp-results gives more
control over what is considered "interesting".

-- 
Jim Lemke   jwlemke@wasabisystems.com   Orillia, Ontario

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-05-31 18:33     ` James Lemke
@ 2006-05-31 18:45       ` Joe Buck
  0 siblings, 0 replies; 20+ messages in thread
From: Joe Buck @ 2006-05-31 18:45 UTC (permalink / raw)
  To: James Lemke; +Cc: law, gcc

On Wed, May 31, 2006 at 02:33:29PM -0400, James Lemke wrote:
> On Wed, 2006-05-31 at 12:27 -0600, Jeffrey Law wrote:
> > On Wed, 2006-05-31 at 11:25 -0700, Joe Buck wrote:
> > > On Wed, May 31, 2006 at 02:13:44PM -0400, James Lemke wrote:
> > > > I wanted some mechanical way to compare the output of dejagnu runs
> > > > between releases, etc.  I asked a few people at the GCC Summit last year
> > > > what they used or knew about.  Not much came to light, so I ended up
> > > > writing something of my own.
> > > 
> > > I thought that Jeff Law had something that compared .sum files back when
> > > he was RM.  The description of what you wrote sounds similar.
> > Don't we have a comparison script in the "contrib" subdirectory?  
> There is contrib/compare_tests although dg-cmp-results gives more
> control over what is considered "interesting".

Well, I suppose people would welcome useful improvements to the contrib
script.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-05-31 18:28   ` Jeffrey Law
  2006-05-31 18:33     ` James Lemke
@ 2006-06-01  0:56     ` Ben Elliston
  2006-06-01  0:59       ` Andrew Pinski
  2006-06-01  2:17       ` Mike Stump
  1 sibling, 2 replies; 20+ messages in thread
From: Ben Elliston @ 2006-06-01  0:56 UTC (permalink / raw)
  To: Jeffrey Law; +Cc: Joe Buck, James Lemke, gcc

> > I thought that Jeff Law had something that compared .sum files back when
> > he was RM.  The description of what you wrote sounds similar.

> Don't we have a comparison script in the "contrib" subdirectory?

If that script does indeed work, then I'd like to distribute it with
DejaGnu.  There used to be a number of similar scripts in DejaGnu's
contrib directory, but none of them worked, so I removed them all.

Ben

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01  0:56     ` Ben Elliston
@ 2006-06-01  0:59       ` Andrew Pinski
  2006-06-01  2:17       ` Mike Stump
  1 sibling, 0 replies; 20+ messages in thread
From: Andrew Pinski @ 2006-06-01  0:59 UTC (permalink / raw)
  To: Ben Elliston; +Cc: Jeffrey Law, Joe Buck, James Lemke, gcc

> 
> > > I thought that Jeff Law had something that compared .sum files back when
> > > he was RM.  The description of what you wrote sounds similar.
> 
> > Don't we have a comparison script in the "contrib" subdirectory?
> 
> If that script does indeed work, then I'd like to distribute it with
> DejaGnu.  There used to be a number of similar scripts in DejaGnu's
> contrib directory, but none of them worked, so I removed them all.

It does work the last time I used it which was last year.
It might also need to be expanded for KFAIL/KPASS for gdb.

Thanks,
Andrew Pinski

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-05-31 18:13 comparing DejaGNU results James Lemke
  2006-05-31 18:25 ` Joe Buck
@ 2006-06-01  1:14 ` Jim Wilson
  2006-06-01  2:43 ` Mike Stump
  2 siblings, 0 replies; 20+ messages in thread
From: Jim Wilson @ 2006-06-01  1:14 UTC (permalink / raw)
  To: James Lemke; +Cc: gcc

James Lemke wrote:
> I wanted some mechanical way to compare the output of dejagnu runs
> between releases, etc.

Did you look at contrib/compare_tests?  It does something very similar 
to what your script is doing.
-- 
Jim Wilson, GNU Tools Support, http://www.specifix.com

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01  0:56     ` Ben Elliston
  2006-06-01  0:59       ` Andrew Pinski
@ 2006-06-01  2:17       ` Mike Stump
  1 sibling, 0 replies; 20+ messages in thread
From: Mike Stump @ 2006-06-01  2:17 UTC (permalink / raw)
  To: Ben Elliston; +Cc: Jeffrey Law, Joe Buck, James Lemke, gcc

On May 31, 2006, at 5:57 PM, Ben Elliston wrote:
>> Don't we have a comparison script in the "contrib" subdirectory?
>
> If that script does indeed work, then I'd like to distribute it with
> DejaGnu.

Please.  Yes, it does work and has been working just fine for the  
past decade to decade and a half.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-05-31 18:13 comparing DejaGNU results James Lemke
  2006-05-31 18:25 ` Joe Buck
  2006-06-01  1:14 ` Jim Wilson
@ 2006-06-01  2:43 ` Mike Stump
  2006-06-01  8:46   ` Richard Earnshaw
                     ` (2 more replies)
  2 siblings, 3 replies; 20+ messages in thread
From: Mike Stump @ 2006-06-01  2:43 UTC (permalink / raw)
  To: James Lemke; +Cc: gcc

[-- Attachment #1: Type: text/plain, Size: 1338 bytes --]

On May 31, 2006, at 11:13 AM, James Lemke wrote:
> My current version is attached.  If others find it useful I can
> contribute it.  Comments and suggestions are welcome.

Please do.  I'd welcome it (and scripts to generate html, to track  
known issues, to trim log files, to drive things and do on)...  I  
think having a few different styles would be good, then people can  
try them all out and see which ones they like and why.  Anyway, for  
me, it isn't yet better:

dg-cmp-results.sh: Verbosity is 0, Variant is "unix"

Older log file: 06031600/gcc.sum
sed: illegal option -- r
usage: sed script [-Ean] [-i extension] [file ...]
        sed [-an] [-i extension] [-e script] ... [-f script_file] ...  
[file ...]
Newer log file: 06052905/gcc.sum
sed: illegal option -- r
usage: sed script [-Ean] [-i extension] [file ...]
        sed [-an] [-i extension] [-e script] ... [-f script_file] ...  
[file ...]
sed: illegal option -- r
usage: sed script [-Ean] [-i extension] [file ...]
        sed [-an] [-i extension] [-e script] ... [-f script_file] ...  
[file ...]
sed: illegal option -- r
usage: sed script [-Ean] [-i extension] [file ...]
        sed [-an] [-i extension] [-e script] ... [-f script_file] ...  
[file ...]
sort: unrecognized option `--'
Try `sort --help' for more information.

:-(

When I fixed it up like this:


[-- Attachment #2: t.txt --]
[-- Type: text/plain, Size: 2392 bytes --]

Doing diffs in /Network/Servers/madrid/Volumes/huis/mstump/bin/dg-cmp-results.~1~:
--- /Network/Servers/madrid/Volumes/huis/mstump/bin/dg-cmp-results.~1~	2006-05-31 15:57:42.000000000 -0700
+++ /Network/Servers/madrid/Volumes/huis/mstump/bin/dg-cmp-results	2006-05-31 17:24:21.000000000 -0700
@@ -42,6 +42,8 @@ OFILE="$2"
 OBASE=`basename "$2"`
 NFILE="$3"
 NBASE=`basename "$3"`
+#export R=-r
+export R=-E
 
 echo "dg-cmp-results.sh: Verbosity is ${verbose}, Variant is \"${VARIANT}\""
 echo
@@ -62,14 +64,14 @@ unset temp
 
 # Copy out the old file's section 0.
 echo "Older log file: $OFILE"
-sed -r -e '/^\t+===/,$d' $OFILE
+sed $R -e '/^\t+===/,$d' $OFILE
 
 # Copy out the new file's section 0.
 echo "Newer log file: $NFILE"
-sed -r -e '/^\t+===/,$d' $NFILE
+sed $R -e '/^\t+===/,$d' $NFILE
 
 # Create a temporary file from the old file's interesting section.
-sed -r -e "1,/$header/d" \
+sed $R -e "1,/$header/d" \
   -e '/^\t+===/,$d' \
   -e '/^[A-Z]+:/!d' \
   -e 's/\r$//' \
@@ -79,7 +81,7 @@ sed -r -e "1,/$header/d" \
   >/tmp/o$$-$OBASE
 
 # Create a temporary file from the new file's interesting section.
-sed -r -e "1,/$header/d" \
+sed $R -e "1,/$header/d" \
   -e '/^\t+===/,$d' \
   -e '/^[A-Z]+:/!d' \
   -e 's/\r$//' \
@@ -94,9 +96,9 @@ sed -r -e "1,/$header/d" \
 # If so, we assume that the order is the same in both files.
 IFS=:
 firstread=Y
-sort --merge -s -t : -k 3b /tmp/o$$-$OBASE /tmp/n$$-$NBASE |
+sort -m -s -t : -k 3b /tmp/o$$-$OBASE /tmp/n$$-$NBASE |
 while read -r lineon linestatus linename; do
-    linename=`echo "$linename" |sed -r -e 's/^ *(.*) *$/\1/'`
+    linename=`echo "$linename" |sed $R -e 's/^ *(.*) *$/\1/'`
 
     if test $verbose -ge 4; then
 	case "$linestatus" in
@@ -231,9 +233,9 @@ while read -r lineon linestatus linename
 	    else
 		##echo "$lines" |read -r prevon prevstatus prevname
 		line=`echo "$lines" |head -n 1`
-		prevon=`echo "$line" |sed -r -e 's/\s*(.):([A-Z]+):(.*)$/\1/'`
-		prevstatus=`echo "$line" |sed -r -e 's/\s*(.):([A-Z]+):(.*)$/\2/'`
-		prevname=`echo "$line" |sed -r -e 's/\s*(.):([A-Z]+):(.*)$/\3/'`
+		prevon=`echo "$line" |sed $R -e 's/\s*(.):([A-Z]+):(.*)$/\1/'`
+		prevstatus=`echo "$line" |sed $R -e 's/\s*(.):([A-Z]+):(.*)$/\2/'`
+		prevname=`echo "$line" |sed $R -e 's/\s*(.):([A-Z]+):(.*)$/\3/'`
 
 		if test $verbose -ge 4; then
 		    echo "  debug: pulled a line from the stack"
--------------

[-- Attachment #3: Type: text/plain, Size: 2760 bytes --]


I got:

Script error: trying to process:
          O: PASS: objc.dg/bad-receiver-type.m  (test for warnings,  
line 13)
         N:PASS:objc.dg/bad-receiver-type.m  (test for warnings, line  
13)

:-(

mrs $ grep 'objc.dg/bad-receiver-type.m'  06031600/objc.sum 06052905/ 
objc.sum
06031600/objc.sum:PASS: objc.dg/bad-receiver-type.m  (test for  
warnings, line 13)
06031600/objc.sum:PASS: objc.dg/bad-receiver-type.m  (test for  
warnings, line 13)
06031600/objc.sum:PASS: objc.dg/bad-receiver-type.m (test for excess  
errors)
06052905/objc.sum:PASS: objc.dg/bad-receiver-type.m  (test for  
warnings, line 13)
06052905/objc.sum:PASS: objc.dg/bad-receiver-type.m  (test for  
warnings, line 13)
06052905/objc.sum:PASS: objc.dg/bad-receiver-type.m (test for excess  
errors)

Mine btw gives:

mrs $ cmp_logs  06031600/objc.sum 06052905/objc.sum
New tests that PASS:

objc.dg/dwarf-2.m (test for excess errors)
objc.dg/dwarf-2.m scan-assembler 0x10[^0-9a-f].*DW_AT_language
objc.dg/member-1.m  (test for errors, line 3)
objc.dg/member-1.m (test for excess errors)

Old tests that passed, that have disappeared: (Eeek!)

objc.dg/stubify-2.m scan-rtl-dump-not symbol_ref.*"objc_msgSend"


I tried all the results and couldn't find any that your script could  
analyze, except libgomp, but only because libgomp doesn't run on my  
system, so there are no results in it?  Is it just me?  I hand edited  
my results to be the first 30 or so from the Objective C++ testsuite,  
and then I got it to analyze and not dump out.

When I tried gcc, I had a chance to notice the timings, your version:

real    8m44.413s
user    2m0.714s
sys     7m54.847s

mine:

real    0m1.994s
user    0m1.756s
sys     0m0.556s

:-)  Maybe you only run the script on toy results?  Or, do you just  
drink lots of coffee?  Now, I know mine is well more than 10-100x  
slower than it could be, but waiting 2 seconds isn't a hardship for  
me.  Waiting 8 minutes strikes me as just a little slow.

The output of yours doesn't seem to be targeted for human eyes, the  
verbosity (at the least verbose setting) is about 121x more than mine  
for two random sets I had lying around, and that is with it cutting  
the output off really early due to the above problem.  I predict that  
in normal day to day use, it is well better than 120,000x larger.   
What use do you get out of it?

Mine was designed to do two things, figure out if the results are  
interesting and not send email, if they are not, and to show  
engineers the `interesting' detailed results in priority order.  It's  
meant to be run daily, and on good days, it produces no output.  On  
normal days, output is 20-30 lines at most.  It tries to balance the  
complaints with the occasional atta boy, to help with moral.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01  2:43 ` Mike Stump
@ 2006-06-01  8:46   ` Richard Earnshaw
  2006-06-01 17:27     ` Mike Stump
  2006-06-01 19:35   ` James Lemke
  2006-06-01 19:44   ` James Lemke
  2 siblings, 1 reply; 20+ messages in thread
From: Richard Earnshaw @ 2006-06-01  8:46 UTC (permalink / raw)
  To: Mike Stump; +Cc: James Lemke, gcc

[-- Attachment #1: Type: text/plain, Size: 1452 bytes --]

On Thu, 2006-06-01 at 03:43, Mike Stump wrote:

> Mine was designed to do two things, figure out if the results are  
> interesting and not send email, if they are not, and to show  
> engineers the `interesting' detailed results in priority order.  It's  
> meant to be run daily, and on good days, it produces no output.  On  
> normal days, output is 20-30 lines at most.  It tries to balance the  
> complaints with the occasional atta boy, to help with moral.

The only problem I have with Mike's script is that it doesn't handle
runs with multiple multi-lib variants nicely.  Attached is a local hack
that I have to address this, but you'll need to re-seed your reference
files if you apply it.

With the change the output generated is not something like

Tests that now work, but didn't before:

arm-sim/-mthumb: g++.old-deja/g++.oliva/template9.C  (test for errors, line 10)
arm-sim: g++.old-deja/g++.oliva/template9.C  (test for errors, line 10)

New tests that FAIL:

arm-sim/-mthumb: g++.dg/init/const3.C (test for excess errors)
arm-sim/-mthumb: g++.dg/opt/temp2.C (test for excess errors)
arm-sim/-mthumb: g++.dg/other/unused1.C scan-assembler stringz?\t"class2"
arm-sim/-mthumb: g++.dg/other/unused1.C scan-assembler stringz?\t"printer"
arm-sim/-mthumb: g++.dg/template/fntry1.C (test for excess errors)
arm-sim: g++.dg/other/unused1.C scan-assembler stringz?\t"class2"
arm-sim: g++.dg/other/unused1.C scan-assembler stringz?\t"printer"


[-- Attachment #2: compare.patch --]
[-- Type: text/plain, Size: 580 bytes --]

--- /home/rearnsha/gnusrc/gcc/trunk/contrib/compare_tests	2005-11-12 16:36:57.000000000 +0000
+++ compare_gcc_tests	2006-01-24 18:49:05.000000000 +0000
@@ -22,8 +22,8 @@
 	exit 2
 fi
 
-sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$1" >$tmp1
-sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$2" >$tmp2
+sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$1" | awk '/^Running target / {target = $3} {sub(/: /, "&"target": " ); print $0;}' >$tmp1
+sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$2" | awk '/^Running target / {target = $3} {sub(/: /, "&"target": " ); print $0;}' >$tmp2
 
 before=$tmp1
 now=$tmp2

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01  8:46   ` Richard Earnshaw
@ 2006-06-01 17:27     ` Mike Stump
  0 siblings, 0 replies; 20+ messages in thread
From: Mike Stump @ 2006-06-01 17:27 UTC (permalink / raw)
  To: Richard Earnshaw; +Cc: James Lemke, gcc

On Jun 1, 2006, at 1:45 AM, Richard Earnshaw wrote:
> The only problem I have with Mike's script is that it doesn't handle
> runs with multiple multi-lib variants nicely.

Yeah, in the past, we drove the multilib pass from above as in  
general we had to select different hardware for testing.  I like the  
idea.

> Attached is a local hack that I have to address this

Let's see if anyone can spot any non-portabilities in it.  I think it  
is safe.  If safe, I'd say let's add this, as it helps.

I do have a slight additional change:

--- cmp_logs.~2~        2006-06-01 09:41:12.000000000 -0700
+++ cmp_logs    2006-06-01 10:05:56.000000000 -0700
@@ -25,2 +25,2 @@
-sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$1" | awk '/^Running  
target / {target = $3} {sub(/: /, "&"target": " ); print $0;}' >$tmp1
-sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$2" | awk '/^Running  
target / {target = $3} {sub(/: /, "&"target": " ); print $0;}' >$tmp2
+sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$1" | awk '/^Running  
target / {target = $3} { if (target != "unix") { sub(/: /,  
"&"target": " ); }; print $0; }' >$tmp1
+sed 's/^XFAIL/FAIL/; s/^XPASS/PASS/' < "$2" | awk '/^Running  
target / {target = $3} { if (target != "unix") { sub(/: /,  
"&"target": " ); }; print $0; }' >$tmp2

This preserves the simplicity in the non-multilib case and keeps  
future results comparable with older results.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01  2:43 ` Mike Stump
  2006-06-01  8:46   ` Richard Earnshaw
@ 2006-06-01 19:35   ` James Lemke
  2006-06-01 20:26     ` James Lemke
  2006-06-01 19:44   ` James Lemke
  2 siblings, 1 reply; 20+ messages in thread
From: James Lemke @ 2006-06-01 19:35 UTC (permalink / raw)
  To: Mike Stump; +Cc: gcc

> Please do.  I'd welcome it (and scripts to generate html, to track  
> known issues, to trim log files, to drive things and do on)...  I  
> think having a few different styles would be good, then people can  
> try them all out and see which ones they like and why.  Anyway, for  
> me, it isn't yet better:
:
> I tried all the results and couldn't find any that your script could  
> analyze, except libgomp, but only because libgomp doesn't run on my  
> system, so there are no results in it?  Is it just me?  I hand edited  
> my results to be the first 30 or so from the Objective C++ testsuite,  
> and then I got it to analyze and not dump out.
> 
> When I tried gcc, I had a chance to notice the timings, your version:
> 
> real    8m44.413s
> user    2m0.714s
> sys     7m54.847s
> 
> mine:
> 
> real    0m1.994s
> user    0m1.756s
> sys     0m0.556s

As I said I had only used it on Linux, I assume you're using Darwin.
I tried it there and had to fix the following.  You got the first two
but not the last so my script was way non-functional.
sed uses -E instead of -r (as you noted)
sort uses -m but not --merge (as you noted)
sed doesn't honour \t or \s

> :-)  Maybe you only run the script on toy results?  Or, do you just  
> drink lots of coffee?  Now, I know mine is well more than 10-100x  
> slower than it could be, but waiting 2 seconds isn't a hardship for  
> me.  Waiting 8 minutes strikes me as just a little slow.
I said it was slow :-)>
On NetBSD your approach is at least 50x faster.  Strangely, on FC3 the
two have similar elapsed times:

time ./compare_tests gcc-sim-20050503.sum gcc-sim-20060528.sum >compare2.lst
real    4m0.729s
user    4m5.880s
sys     0m0.231s

time ./dg-cmp-results.sh -v "" gcc-sim-20050503.sum gcc-sim-20060528.sum >dg-cmp2.lst
real    4m25.941s
user    1m29.850s
sys     3m8.021s

> The output of yours doesn't seem to be targeted for human eyes, the  
> verbosity (at the least verbose setting) is about 121x more than mine  
> for two random sets I had lying around, and that is with it cutting  
> the output off really early due to the above problem.  I predict that  
> in normal day to day use, it is well better than 120,000x larger.   
> What use do you get out of it?
It obviously wasn't working properly for you due to linux - netbsd
differences.
wc -l *2.lst
  66 compare2.lst
  63 dg-cmp2.lst

Results from mine should have looked like:
dg-cmp-results.sh: Verbosity is 1, Variant is ""

Older log file: gcc-sim-20050503.sum
Test Run By jim on Mon May  2 12:29:08 2005
Target is xscale-unknown-elf
Host   is i686-pc-linux-gnu

Newer log file: gcc-sim-20060528.sum
Test Run By jim on Mon May 29 12:55:01 2006
Target is xscale-unknown-elf
Host   is i686-pc-linux-gnu

PASS->FAIL: gcc.c-torture/execute/920428-2.c compilation,  -O1
PASS->FAIL: gcc.c-torture/execute/920428-2.c compilation,  -O2
PASS->FAIL: gcc.c-torture/execute/920428-2.c compilation,  -O3 -fomit-frame-pointer
PASS->FAIL: gcc.c-torture/execute/920428-2.c compilation,  -O3 -g
PASS->FAIL: gcc.c-torture/execute/920428-2.c compilation,  -Os
PASS->UNRESOLVED: gcc.c-torture/execute/920428-2.c execution,  -O1
PASS->UNRESOLVED: gcc.c-torture/execute/920428-2.c execution,  -O2
:
PASS->UNRESOLVED: gcc.c-torture/execute/nestfunc-6.c execution,  -Os
FAIL->PASS: gcc.dg/20030324-1.c execution test
FAIL->PASS: gcc.dg/debug/dwarf2/dwarf-die7.c scan-assembler 1.*DW_AT_inline
FAIL->PASS: gcc.dg/range-test-1.c execution test

> Mine was designed to do two things, figure out if the results are  
> interesting and not send email, if they are not, and to show  
> engineers the `interesting' detailed results in priority order.  It's  
> meant to be run daily, and on good days, it produces no output.  On  
> normal days, output is 20-30 lines at most.  It tries to balance the  
> complaints with the occasional atta boy, to help with moral.
Mine is used at the end of full build & test runs so a few minutes
didn't bother me.  A look at output like that above tells me what I
need.

Your approach is faster, esp. on Darwin / NetBSD.
The only advantages I see to mine is handling variants (Richard's patch
fixes that), verbosity control, and detail -- compare_tests only looks
at X?(PASS|X?FAIL).

Jim.

-- 
Jim Lemke   jwlemke@wasabisystems.com   Orillia, Ontario

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01  2:43 ` Mike Stump
  2006-06-01  8:46   ` Richard Earnshaw
  2006-06-01 19:35   ` James Lemke
@ 2006-06-01 19:44   ` James Lemke
  2 siblings, 0 replies; 20+ messages in thread
From: James Lemke @ 2006-06-01 19:44 UTC (permalink / raw)
  To: Mike Stump; +Cc: gcc

[-- Attachment #1: Type: text/plain, Size: 131 bytes --]

Whoops... I forgot to attach my fixes, for anyone that's interested.

-- 
Jim Lemke   jwlemke@wasabisystems.com   Orillia, Ontario

[-- Attachment #2: Type: text/x-patch, Size: 2652 bytes --]

--- dg-cmp-results.sh	2006/05/31 19:22:14	1.18
+++ dg-cmp-results.sh	2006/06/01 17:53:21
@@ -31,6 +31,16 @@ if test $# -ne 3 -o ! -f "$2" -o ! -f "$
     exit 1
 fi
 
+# Command differences for various platforms.
+case `uname -s` in
+Darwin|NetBSD)
+    E=-E	# sed
+    ;;
+*)
+    E=-r	# sed
+    ;;
+esac
+
 # sections are identified by separator lines beginning with '\t\t==='.
 # section 0 identifies run date, target, and host.
 # section 1 and subsequent contain test data for a target variant.
@@ -62,15 +72,15 @@ unset temp
 
 # Copy out the old file's section 0.
 echo "Older log file: $OFILE"
-sed -r -e '/^\t+===/,$d' $OFILE
+sed $E -e '/^[[:space:]]+===/,$d' $OFILE
 
 # Copy out the new file's section 0.
 echo "Newer log file: $NFILE"
-sed -r -e '/^\t+===/,$d' $NFILE
+sed $E -e '/^[[:space:]]+===/,$d' $NFILE
 
 # Create a temporary file from the old file's interesting section.
-sed -r -e "1,/$header/d" \
-  -e '/^\t+===/,$d' \
+sed $E -e "1,/$header/d" \
+  -e '/^[[:space:]]+===/,$d' \
   -e '/^[A-Z]+:/!d' \
   -e 's/\r$//' \
   -e 's/^/O:/' \
@@ -79,8 +89,8 @@ sed -r -e "1,/$header/d" \
   >/tmp/o$$-$OBASE
 
 # Create a temporary file from the new file's interesting section.
-sed -r -e "1,/$header/d" \
-  -e '/^\t+===/,$d' \
+sed $E -e "1,/$header/d" \
+  -e '/^[[:space:]]+===/,$d' \
   -e '/^[A-Z]+:/!d' \
   -e 's/\r$//' \
   -e 's/^/N:/' \
@@ -94,9 +104,9 @@ sed -r -e "1,/$header/d" \
 # If so, we assume that the order is the same in both files.
 IFS=:
 firstread=Y
-sort --merge -s -t : -k 3b /tmp/o$$-$OBASE /tmp/n$$-$NBASE |
+sort -m -s -t : -k 3b /tmp/o$$-$OBASE /tmp/n$$-$NBASE |
 while read -r lineon linestatus linename; do
-    linename=`echo "$linename" |sed -r -e 's/^ *(.*) *$/\1/'`
+    linename=`echo "$linename" |sed $E -e 's/^ *(.*) *$/\1/'`
 
     if test $verbose -ge 4; then
 	case "$linestatus" in
@@ -231,15 +241,15 @@ while read -r lineon linestatus linename
 	    else
 		##echo "$lines" |read -r prevon prevstatus prevname
 		line=`echo "$lines" |head -n 1`
-		prevon=`echo "$line" |sed -r -e 's/\s*(.):([A-Z]+):(.*)$/\1/'`
-		prevstatus=`echo "$line" |sed -r -e 's/\s*(.):([A-Z]+):(.*)$/\2/'`
-		prevname=`echo "$line" |sed -r -e 's/\s*(.):([A-Z]+):(.*)$/\3/'`
+		prevon=`echo "$line" |sed $E -e 's/ *(.):([A-Z]+):(.*)$/\1/'`
+		prevstatus=`echo "$line" |sed $E -e 's/ *(.):([A-Z]+):(.*)$/\2/'`
+		prevname=`echo "$line" |sed $E -e 's/ *(.):([A-Z]+):(.*)$/\3/'`
 
 		if test $verbose -ge 4; then
 		    echo "  debug: pulled a line from the stack"
 		fi
 		#lines=`echo "$lines" |tail -n $numlines`
-		lines=`echo "$lines" |sed -e 1d`
+		lines=`echo "$lines" |sed $E -e 1d`
 	    fi
 	    ;;
 	*)

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01 19:35   ` James Lemke
@ 2006-06-01 20:26     ` James Lemke
  2006-06-01 20:36       ` Joseph S. Myers
  2006-06-02 18:08       ` James Lemke
  0 siblings, 2 replies; 20+ messages in thread
From: James Lemke @ 2006-06-01 20:26 UTC (permalink / raw)
  To: Mike Stump; +Cc: gcc

> Your approach is faster, esp. on Darwin / NetBSD.
> The only advantages I see to mine is handling variants (Richard's patch
> fixes that), verbosity control, and detail -- compare_tests only looks
> at X?(PASS|FAIL).

Hmm.. another small point, FWIW.

Both the results files I used contained the following ssequence of
results:
PASS: gcc.c-torture/compile/930210-1.c (test for excess errors)
PASS: gcc.c-torture/compile/930210-1.c (test for excess errors)
FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
PASS: gcc.c-torture/compile/930210-1.c (test for excess errors)
FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)

compare_tests reported the following:
Tests that now fail, but worked before:
gcc.c-torture/compile/930210-1.c (test for excess errors)
gcc.c-torture/compile/930210-1.c (test for excess errors)
gcc.c-torture/compile/930210-1.c (test for excess errors)
:
Tests that now work, but didn't before:
gcc.c-torture/compile/930210-1.c (test for excess errors)
gcc.c-torture/compile/930210-1.c (test for excess errors)
gcc.c-torture/compile/930210-1.c (test for excess errors)

dg-cmp-results didn't report anything (at that verbosity) because
nothing had changed.

-- 
Jim Lemke   jwlemke@wasabisystems.com   Orillia, Ontario

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01 20:26     ` James Lemke
@ 2006-06-01 20:36       ` Joseph S. Myers
  2006-06-01 20:42         ` James Lemke
  2006-06-02 18:08       ` James Lemke
  1 sibling, 1 reply; 20+ messages in thread
From: Joseph S. Myers @ 2006-06-01 20:36 UTC (permalink / raw)
  To: James Lemke; +Cc: Mike Stump, gcc

On Thu, 1 Jun 2006, James Lemke wrote:

> Both the results files I used contained the following ssequence of
> results:
> PASS: gcc.c-torture/compile/930210-1.c (test for excess errors)
> PASS: gcc.c-torture/compile/930210-1.c (test for excess errors)
> FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
> FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
> FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
> PASS: gcc.c-torture/compile/930210-1.c (test for excess errors)
> FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
> FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)

This probably means you are using too old a version of DejaGnu; make sure 
you are using at least 1.4.4, the minimum supported version.  There are 
still problems with duplicate test assertion names (e.g. bug 20771), but 
there shouldn't be in c-torture if you use current DejaGnu.

-- 
Joseph S. Myers               http://www.srcf.ucam.org/~jsm28/gcc/
    jsm@polyomino.org.uk (personal mail)
    joseph@codesourcery.com (CodeSourcery mail)
    jsm28@gcc.gnu.org (Bugzilla assignments and CCs)

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01 20:36       ` Joseph S. Myers
@ 2006-06-01 20:42         ` James Lemke
  0 siblings, 0 replies; 20+ messages in thread
From: James Lemke @ 2006-06-01 20:42 UTC (permalink / raw)
  To: Joseph S. Myers; +Cc: Mike Stump, gcc

> > Both the results files I used contained the following ssequence of
> > results:
> > PASS: gcc.c-torture/compile/930210-1.c (test for excess errors)
> > PASS: gcc.c-torture/compile/930210-1.c (test for excess errors)
> > FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
> > FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
> > FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
> > PASS: gcc.c-torture/compile/930210-1.c (test for excess errors)
> > FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
> > FAIL: gcc.c-torture/compile/930210-1.c (test for excess errors)
> 
> This probably means you are using too old a version of DejaGnu; make sure 
> you are using at least 1.4.4, the minimum supported version.  There are 
> still problems with duplicate test assertion names (e.g. bug 20771), but 
> there shouldn't be in c-torture if you use current DejaGnu.

Thanks.
Regardless, dg-cmp-results handles that situation, albeit slowly  ; - )>

-- 
Jim Lemke   jwlemke@wasabisystems.com   Orillia, Ontario

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-01 20:26     ` James Lemke
  2006-06-01 20:36       ` Joseph S. Myers
@ 2006-06-02 18:08       ` James Lemke
  2006-06-02 23:27         ` Mike Stump
  1 sibling, 1 reply; 20+ messages in thread
From: James Lemke @ 2006-06-02 18:08 UTC (permalink / raw)
  To: gcc

[-- Attachment #1: Type: text/plain, Size: 368 bytes --]

I took a quick pass at implementing the comparisons in a more suitable
lanugage.  Run time is now a few seconds on both platforms.  About the
same as compare_tests on my old ibook/OSX and much faster on FC3.
Trials show the same results as before.

For anyone interested, the new version is attached.
Jim.

-- 
Jim Lemke   jwlemke@wasabisystems.com   Orillia, Ontario

[-- Attachment #2: Type: application/x-shellscript, Size: 5100 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-02 18:08       ` James Lemke
@ 2006-06-02 23:27         ` Mike Stump
  2006-06-03 12:35           ` James Lemke
  0 siblings, 1 reply; 20+ messages in thread
From: Mike Stump @ 2006-06-02 23:27 UTC (permalink / raw)
  To: James Lemke; +Cc: gcc

On Jun 2, 2006, at 11:08 AM, James Lemke wrote:
> I took a quick pass at implementing the comparisons in a more suitable
> lanugage.  Run time is now a few seconds on both platforms.  About the
> same as compare_tests on my old ibook/OSX and much faster on FC3.

Since Ben and I seem interested in this, I think we should check in  
this version.  It seems portable enough and useful enough.  Any  
objections from the crowd?

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: comparing DejaGNU results
  2006-06-02 23:27         ` Mike Stump
@ 2006-06-03 12:35           ` James Lemke
  0 siblings, 0 replies; 20+ messages in thread
From: James Lemke @ 2006-06-03 12:35 UTC (permalink / raw)
  To: Mike Stump; +Cc: gcc

On Fri, 2006-06-02 at 16:26 -0700, Mike Stump wrote:
> On Jun 2, 2006, at 11:08 AM, James Lemke wrote:
> > I took a quick pass at implementing the comparisons in a more suitable
> > lanugage.  Run time is now a few seconds on both platforms.  About the
> > same as compare_tests on my old ibook/OSX and much faster on FC3.
> 
> Since Ben and I seem interested in this, I think we should check in  
> this version.  It seems portable enough and useful enough.  Any  
> objections from the crowd?

If not, I'll commit it to contrib/ on Monday.

-- 
Jim Lemke   jwlemke@wasabisystems.com   Orillia, Ontario

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2006-06-03 12:35 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-05-31 18:13 comparing DejaGNU results James Lemke
2006-05-31 18:25 ` Joe Buck
2006-05-31 18:28   ` Jeffrey Law
2006-05-31 18:33     ` James Lemke
2006-05-31 18:45       ` Joe Buck
2006-06-01  0:56     ` Ben Elliston
2006-06-01  0:59       ` Andrew Pinski
2006-06-01  2:17       ` Mike Stump
2006-06-01  1:14 ` Jim Wilson
2006-06-01  2:43 ` Mike Stump
2006-06-01  8:46   ` Richard Earnshaw
2006-06-01 17:27     ` Mike Stump
2006-06-01 19:35   ` James Lemke
2006-06-01 20:26     ` James Lemke
2006-06-01 20:36       ` Joseph S. Myers
2006-06-01 20:42         ` James Lemke
2006-06-02 18:08       ` James Lemke
2006-06-02 23:27         ` Mike Stump
2006-06-03 12:35           ` James Lemke
2006-06-01 19:44   ` James Lemke

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).