On Thu, Oct 10, 2019 at 03:28:39PM +0200, Ján Tomko wrote: > On Wed, Oct 09, 2019 at 12:37:15PM +0100, Daniel P. Berrangé wrote: > > Note that the check-spacing.py script is significantly > > slower in Python than in Perl. After researching this > > it appears there is nothing that can be done. The Perl > > regex engine is simply much better optimized than the > > Python one. > > I'm afraid immutability of strings does not help either. > I tried speeding it up a bit by running the regexes conditionally, e.g.: > > + if '"' in data: > + data = quotedstringprog.sub('"XXX"', data) > > That got it down from 0m6.368s to 0m3.802s (compared to perl's 1.5s), > but even before that change, I don't consider the Python version of this > one script to be more readable. > > Note that perl's optimizations aren't perfect either - merely > moving all the checks into a subroutine resulted in a significant > slowdown. > > > As previously discussed we need to loook > > at uncrustify or clang-format or some other tool to > > validate whitespace formatting. This is ongoing. We > > can either accept the slow down in the short term or > > keep the Perl version in the short term. > > > > Just to set the expectations, running clang-format on all the > C files took me ~40 s. Not sure how much that can be efficiently > parallelized or if meson could be convinced to start clang-format > as the first thing for the 'check' target, even before starting > to compile anything. Not entirely surprising since it is actually doing proper parsing of the C syntax, which is quite a bit of work. FWIW, when I'm writing Go code I have used emacs 'go-mode' and this runs 'go fmt' to automatically fix your style problems every time you save the file. So your code is basically always correct, and you don't need a separate job to check it later. For this approach to be viable though, you need to have an automated CI check that is run at time of pushing to git master to block pushes of code which is non-compliant. It is the kind of thing projects do when using pull requests & gating CI in gitlab/github though. So this is itself another can of worms. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list