List Info

Thread: Re: PATCH: SBU method change and bc removal.




Re: PATCH: SBU method change and bc removal.
user name
2007-05-24 13:01:50
On 5/24/07, Ag. D. Hatzimanikas <a.hatzimgmail.com> wrote:
>
> So, it's not possible to store in a variable the
abstraction:
> $end - $start
> and take the total seconds of the build while we are
doing the
> calculations, can't we?
> That's why I had to write it in the log file first.

You can, you just have to chain the commands together or
otherwise run
things in a dedicated subshell. Each make command starts a
separate
$SHELL process. But,

target:
    do something && do something else

will go in a single shell since that would be interpreted as
a single
command. Or, you can make one long command by just chaining
commands
with .

target:
    set -e; 
    do something; 
    do something else

Here's an example.

$ cat Makefile
foo:
        echo $$$$; echo $$$$
        echo $$$$
        echo $$$$
        start=`date +%s.%N`; 
        sleep 2; 
        end=`date +%s.%N`; 
        perl -e "printf "%.3fn", ( $$end -
$$start )"
$ make
echo $$; echo $$
12464
12464
echo $$
12465
echo $$
12466
start=`date +%s.%N`; 
        sleep 2; 
        end=`date +%s.%N`; 
        perl -e "printf "%.3fn", ( $end -
$start )"
2.003

The main purpose of using the { } or ( ) in a Makefile is
for
redirecting output from multiple commands. Something like:

bar:
        set -e; 
        { ls; uptime; barf; } > logfile 2>&1

There's a bit of excessive subshelling going on in jhalfs. I
may try
to clean this up one of these days.

> > One other thing to think about is that we lose
resolution when we just
> > use whole seconds. But, that can be recovered if
we use the %N
> > modifier from date.
>
> Does really matters? We are talking about nanoseconds,
anyway it's not
> that difficult if you would like to do that.
> The difficult thing these is to win the Spurs and
Duncan these days. 

Right. The nanoseconds don't matter. But tenths of seconds
might. In
that case, you can just drop the printf modifier to %.1f or
something.

We'll see if the Jazz can come back at home. I don't think
they've
lost a game at home yet in the playoffs. I told you the
Spurs would be
tough to beat, right? 

> > But, the same thing could be done with time and a
proper TIMEFORMAT
> > variable. So, I think that the using perl instead
of bc is a win.
> > Using perl instead of time doesn't really gain
anything, though.
> > I'd originally written that, it was because we
were trying to figure
> > out how to use dash, which doesn't have a time
builtin. But, just
> > forcing bash makes things easier.
>
> This approach is shell agnostic, doesn't depends in
Bash internal variables
> like time and so on, and so could be adopted by other
shells which is my
> desire also.

True. There are other places in jhalfs where bash is
expected, but it
probably doesn't make sense to force bash when another
solution is
possible.

> The gain in time is negligible. I've finished one build
now with this method,
> and after a check it seems that it takes the same time.
Actually it's
> that close, see:
>
>                                 [gcc-pass1]
> Patched Jhalfs : Build time is: 26 minutes and 2
seconds
> Un-patched     : Build time is: 26 minutes and 35
seconds
> or for  [glibc] is exactly the same.
> Build time is:  16 minutes and 27 seconds
> Build time is:  16 minutes and 27 seconds

Looks good.

--
Dan
-- 
http://linuxfromscratch.org/mailman/listinfo/alfs-discu
ss
FAQ: http://www.linux
fromscratch.org/faq/
Unsubscribe: See the above information page

Re: PATCH: SBU method change and bc removal.
country flaguser name
Spain
2007-05-26 06:51:41
El Jueves, 24 de Mayo de 2007 20:01, Dan Nicholson
escribió:

> The main purpose of using the { } or ( ) in a Makefile
is for
> redirecting output from multiple commands. Something
like:
>
> bar:
>         set -e; 
>         { ls; uptime; barf; } > logfile 2>&1
>
> There's a bit of excessive subshelling going on in
jhalfs. I may try
> to clean this up one of these days.

Removing the dependency on time almost all that subshells
can be removed, 
leading to less forked process and, maybe, improving overall
Makefile time 
run.


-- 
Manuel Canales Esparcia
Usuario de LFS nº2886:       http://www.linuxfroms
cratch.org
LFS en castellano: http://www.escomp
oslinux.org/lfs-es http://www.lfs-es.info
TLDP-ES:                           http://es.tldp.org
-- 
http://linuxfromscratch.org/mailman/listinfo/alfs-discu
ss
FAQ: http://www.linux
fromscratch.org/faq/
Unsubscribe: See the above information page

[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )