Problem bei Zeitmessung für Pi-Berechnung in FreeBSD

Hallo

Ich habe ein blödes Problem in FreeBSD.
Ich möchte die zeit zurückbekommen, die FreeBSD für die Berechnung von PI auf 3000 Stellen braucht.

Unter Linux benutze ich dazu:
time echo "scale=3000; 4*a(1)" | bc -l

Funktioniert und gibt die Rechenzeit für Pi zurück.

Dasselbe unter FreeBSD (11.1) gibt nur PI zurück, keine Rechenzeit.X(

Woran liegt das, bzw. wie müßte ein entsprechender Befehl unter FreeBSD für Pi mit 3000 Stellen lauten ?

mfg
schwedenmann
 
Zuletzt bearbeitet:
Dasselbe unter FreeBSD (11.1) gibt nur PI zurück, keine Rechenzeit.X(
Woran liegt das, bzw. wie müßte ein entsprechender Befehl unter FreeBSD für Pi mit 3000 Stellen lauten ?
An der Shell.
Code:
 % time echo "scale=3000;4*a(1)"|bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
<skip>
echo "scale=3000;4*a(1)"  0,00s user 0,00s system 59% cpu 0,004 total
bc -l  4,64s user 0,01s system 99% cpu 4,656 total
% echo $SHELL && uname -s
/usr/local/bin/zsh
FreeBSD
% bash
$ time echo "scale=3000;4*a(1)"|bc -l
...
real	0m4,623s
user	0m4,618s
sys	0m0,001s
(Т)csh built-in "time" hat "Probleme" mit Pipes (ist nicht spezifiziert: time, wenn auch die verbreitetesten interaktiven Shells nicht nur Piping, sondern auch die komplette "Zerlegung" der Zeit in einzelne Prozesse unterstützen)
Also: entweder die Shell wechseln.
Oder auf die built-ins verzichten und so etwas nutzen:
Code:
% echo "scale=3000;4*a(1)" | /usr/bin/time -h bc -l
Oder solche Konstrukte einsetzen:
Code:
time sh -c 'echo "scale=3000;4*a(1)" | bc -l'
 
Pi auf 3000 Stellen

Hallo

@CDW
Hat bestens geklappt.

Ist eigentlich bc in jedem OS von der Performance identisch ?

Ich habe nämlich hier 3,08s real unter FreeBSD 11.1, ist ein AM3+ MB mit Athlon II X2-240 2x2,8Ghz + 4GB RAM
Ähnliches MB und CPU unter Linux 8,5 bzw. 8,2s , alle 2 Desktop-PC mit X und den Standardprogrammen dafür).

Selbst mein 8-Kerner schafft nur 5,7s (ok, da laufen im Moment auch jede menge Prozesse im Hintergrund ab, da ist also noch Luft nach oben.:D

mfg
schwedenmann
 
Ist eigentlich bc in jedem OS von der Performance identisch ?
AFAIK ist bc nur ein Präprocessor für dc (desk calculator).

Beide sind unter /usr/src/usr.bin/ (nicht "contrib") zu finden, head dc.c gibt aus:
Code:
% head /usr/src/usr.bin/dc/dc.c 
/*	$OpenBSD: dc.c,v 1.11 2009/10/27 23:59:37 deraadt Exp $	*/

/*
 * Copyright (c) 2003, Otto Moerbeek <otto@drijf.net>
 * Copyright (c) 2009, Gabor Kovesdan <gabor@FreeBSD.org>
Also sind es BSD-Entwicklungen, womit ich davon ausgehe, dass die Pinguinler 'ne komplett eigene Version haben:
Debian -- Details of package dc in sid
Code:
% head /tmp-build/bc-1.07.1/dc/dc.h 
/*
 * Header file for dc routines
 *
 * Copyright (C) 1994, 1997, 1998, 2008
 * Free Software Foundation, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3, or (at your option)
 * any later version.


Ähnliches MB und CPU unter Linux 8,5 bzw. 8,2s , alle 2 Desktop-PC mit X und den Standardprogrammen dafür).
Selbst mein 8-Kerner schafft nur 5,7s (ok, da laufen im Moment auch jede menge Prozesse im Hintergrund ab, da ist also noch Luft nach oben.:D
Die 4.68s aus meinem Post wurden auf 'nem i5 M560 (M=Mobile, also auf 'nem Laptop) von 2010 erreicht.
Wenn ich die Runtertaktung abschalte (und damit Turbo-Boost erlaube), geht's noch schneller:
> echo "scale=3000;4*a(1)" 0,00s user 0,00s system 58% cpu 0,002 tota
>bc -l 3,40s user 0,00s system 99% cpu 3,405 total
:p
 
Zurück
Oben