All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: Daniel Walker <dwalker@fifo99.com>
Cc: Andy Whitcroft <apw@canonical.com>, linux-kernel@vger.kernel.org
Subject: Re: checkpatch.pl is getting too slow
Date: Sat, 31 Jan 2009 20:46:14 -0800	[thread overview]
Message-ID: <20090201044614.GA8589@kroah.com> (raw)
In-Reply-To: <1233449877.5903.48.camel@desktop>

On Sat, Jan 31, 2009 at 04:57:57PM -0800, Daniel Walker wrote:
> On Sat, 2009-01-31 at 21:02 +0000, Andy Whitcroft wrote:
> > On Sat, Jan 31, 2009 at 10:55:07AM -0800, Greg KH wrote:
> > > Hi Andy,
> > > 
> > > I've noticed that checkpatch.pl is getting slower and slower when run on
> > > a whole file, but yesterday I realized that it now is pretty much
> > > unusable:
> > > 
> > > $ time ./scripts/checkpatch.pl --file drivers/staging/uc2322/aten2011.c
> > > 
> > > <snip>
> > > total: 168 errors, 126 warnings, 3939 lines checked
> > > 
> > > drivers/staging/uc2322/aten2011.c has style problems, please review.  If any of these errors
> > > are false positives report them to the maintainer, see
> > > CHECKPATCH in MAINTAINERS.
> > > 
> > > real	8m7.924s
> > > user	8m7.058s
> > > sys	0m0.116s
> > 
> > That is scarey indeed.  Something is very wrong in there if it went back
> > to a more reasonable 10's of seconds with a few patches.  I will have a
> > look at the file you attached and see what I can find.
> > 
> > Thanks for the heads up.
> 
> After some debugging it looks like it takes a long time to processes
> lines similar to,
> 
> /*************************************
>  * Bit definitions for each register *
>  *************************************/
> #define LCR_BITS_5              0x00    /* 5 bits/char */
> #define LCR_BITS_6              0x01    /* 6 bits/char */
> #define LCR_BITS_7              0x02    /* 7 bits/char */
> #define LCR_BITS_8              0x03    /* 8 bits/char */
> #define LCR_BITS_MASK           0x03    /* Mask for bits/char field */
> 
> 
> There's a section in the code which has several of these. The processing
> slows down when this expression matches repeatedly,

Ah, that makes some sense, as I did remove a lot of these that were not
being used in other patches to the file.

> # Check for potential 'bare' types
>                 my ($stat, $cond, $line_nr_next, $remain_next, $off_next);
>                 if ($realcnt && $line =~ /.\s*\S/) {
>                         ($stat, $cond, $line_nr_next, $remain_next, $off_next) =
>                                 ctx_statement_block($linenr, $realcnt, 0);
> 
> and ctx_statement_block will process $realcnt lines trying to find a
> complete block, and it has no concept of "define" so it just keep
> processing until it's concept of a block ending.. That happens on each
> "define" line in the file, which I think accounts for all the overhead.
> 
> I added the following temporary work around, which speeds things up
> considerably. Just forcing it to only process one line at most.

But defines do cross a line, and we should be able to check them
properly, isn't that what the original version of this was doing?

thanks,

greg k-h

  reply	other threads:[~2009-02-01  4:49 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-31 18:55 checkpatch.pl is getting too slow Greg KH
2009-01-31 21:02 ` Andy Whitcroft
2009-01-31 21:35   ` Daniel Walker
2009-01-31 22:10     ` Daniel Walker
2009-02-01  0:57   ` Daniel Walker
2009-02-01  4:46     ` Greg KH [this message]
2009-02-01 14:33       ` Daniel Walker
2009-02-01 17:47       ` Daniel Walker
2009-02-03  5:16         ` Greg KH
2009-02-09  8:41           ` Andy Whitcroft
2009-02-09  8:58         ` Andy Whitcroft

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090201044614.GA8589@kroah.com \
    --to=greg@kroah.com \
    --cc=apw@canonical.com \
    --cc=dwalker@fifo99.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.