[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [TSVN] Speed optimizing the build process?

From: Markus Schuh <markus.schuh_at_sdm.de>
Date: 2005-08-10 18:26:45 CEST

SteveKing schrieb:

> Wow! 12 hours is really a *lot*! What are the specs of your machine?

The windows installation on this Pentium M (with 1,5 GHz) seems to be
totally messed up. Not worth to use this for compiling any more or
discussing the reason. (Probably to much testing of virtual environments
like colinux, qemu and other or perhaps other broken third party system
drivers.)

I've managed to setup the compile environment on a 3 GHz Pentium with
hyperthreading, which I may use for a while. The full build last 50 min
now. Now I can test possible changes before going to public ...

>> IMHO it is not necessary to always rebuild the subversion sources twice
>> during the build. As soon as svn_private_config.h is changed the VS.NET
>> project files should know which parts has to be recompiled. At least if
>> the time stamp of the changed svn_private_config.h is newer than the
>> time stamps of all already compiled *.obj files. Since
>> svn_private_config.h is automatically build from svn_private_config.hw
>> if it does not exist yet, it seems to be best to only delete
>> svn_private_config.h after every change of svn_private_config.hw.
>
>
> I know it's not necessary to rebuild twice. But it's just easier that
> way ;)

The dependency checks inside the Subversion vsproj files are not as good
as I asumed. I compiled the netless version, then changed the
svn_privat_config.h (with a date newer than any compiled objects.) When
I change the "/rebuild" to a "/build" now, not all libraries which
depend on svn_private_config.h are rebuilt. I have to do more testing.

>> Next change: In the "netless" subversion compile only the necessary
>> libraries has to be compiled, so I don't compile "__ALL__" but these
>> libraries one after the other. Since TSVN is a subversion client it
>> should only need those libraries which other subversion clients use too.
>> Therefore I changed the project in the "normal" subversion compile from
>> "__ALL__" to "svn".
>
> Even better would be if we just would compile the required library
> projects. We don't need the 'svn' project either because that will
> build the command line exe.

The "svn" project is not perfect. But it is kind of "better" than
"__ALL__". But the difference is minimal. (a few command line commands
less.) I will do more checks. And there is a risc that - some day -
tsvn will depend on more parts of the svn-vs-projects than the single
project "svn" does now. With "__ALL__" you are on the safe side.

>> echo building Subversion
>> if EXIST subversion\svn_private_config.h del
>> subversion\svn_private_config.h
>> move /Y subversion\svn_private_config_copy.hw
>> subversion\svn_private_config.hw
>> devenv subversion_vcnet.sln /useenv /build release /project "svn"
>> )
>
>
> Your changes look very good! Can you create a patch of this and send it?
>
After more testing my code I don't think I've done it right. Every
execution of devenv checks the dependend projects as apr again. Result:
no more "errors but a lot of unnecessary checking. And the main problem:
Is there something like "make clean" possible with devenv? I can not
find the right options for this. But I've now realized that a real
rebuild between netless and normal compile is not so wrong.

>
>> :: ToDo: add a subversion dependency project "netless" and build this
>> in one run
>
>
> How would you add an extra project? The Subversion solution file is
> built automatically by the gen-make.py script.

Built automatically based on a relativ simple "build.conf". This could
be changed before the "gen-make.py" call. And changed back afterwards.
All these changes are bigger than assumed and it is still unclear to me
if my results will be usable.

I've put some "echo %time%" in my build.bat and checked how to to speed
up other parts.
The first run leads to roughly (rounded procents of compile time)

  OpenSSL 10%
  SVN Debug 20%
  SVN Release 20%
  TSVN Release 5%
  TSVN Debug 5%
  Docs 20%
  Make_Lang_inst 20%

(This is not true for later runs since not all code is recompiled, i.e.
parts of openssl)

So I've concentrated my efforts first on the Docs/Lang part.
I'm just testing a new build.bat option "/lang <lang>". (optional) This
is a simple change because the real work is already done inside the
called scripts. Sorry, this option is of no worth for the compile of the
nightly or official TSVN. Only for private compiles.

With a
  build.bat release doc setup /lang de
I can reduce the compile time for my purposes a lot.
This is only a shortcut to (executed in the right directories)
  build.bat release
  gendoc en
  MakeMsi
  gendoc de
  Make_Installer de

This is definitly no speed optimizing but only learning to read all tsvn
documentation ...

Markus

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: dev-help@tortoisesvn.tigris.org
Received on Wed Aug 10 18:27:13 2005

This is an archived mail posted to the TortoiseSVN Dev mailing list.