On Jul 29, 1:17 am, [EMAIL PROTECTED] (Jeremy Begg) wrote:
> Hi,
>
> FWIW I ran this test on my AlphaStation 255/300 with VMS 7.3-2 and Perl 5.8.7

Ah... I received this Email today from Jeremy but did not recognize it
came through this group, so I replied just to him.

This appears to be fixed in perl 5.10.
On 5.8-6 the extra elapsed time is burned strictly in usermode cpu
time (in DECCRTL)

-------------------- 5.8 ----
$ perl -v
This is perl, v5.8.6 built for VMS_AXP
$ show cpu
System: HEINA, AlphaServer DS10 600 MHz
$ @time perl tmp.pl
zerobuffer: 8192
REC #100 geschrieben
REC #200 geschrieben
REC #300 geschrieben
REC #400 geschrieben
REC #500 geschrieben
Dirio=    91 Bufio=    66 Kernel=  2 Exec=  1 User=581 Elapsed=   647
$ edit/edt tmp.pl
*s/0/32
:
Dirio=    88 Bufio=    66 Kernel=  7 Exec=  1 User=  1 Elapsed=    89

-------------------- 5.10  ----
$ show cpu
System: EISNER, AlphaServer DS20 500 MHz
$ perl -v
This is perl, v5.10.0 built for VMS_AXP
-0-
Dirio=   137 Bufio=    64 Kernel= 10 Exec=  4 User=  2 Elapsed=   112
-32-
Dirio=    94 Bufio=    60 Kernel=  4 Exec=  3 User=  5 Elapsed=   111

This was in an uncrontrolled environment.
RMS tuning will influence the absolute results. ome IO and CPU
variants can be avoided by always deleting the output file before re-
running to get a similar file type and allocation pattern. The DECC
RTL will create a file with attributes from a prior file, unless told
otherwise (logical name).
This will influence inter-system tests.

The excess time is all burned in the C-rtl called by perlshr, for a
strlen, or a scan for terminator, one guesses.
SDA> pcs show trace /stat
PC                IPL Pid      Count        Routine
----------------- --- -------- ------------
-------------------------------- ------
80B66F38  0  20200268           40 DECC$SHR_EV56+CEF38
80B648A8  0  20200268           35 DECC$SHR_EV56+CC8A8
80B64894  0  20200268           32 DECC$SHR_EV56+CC894
80B66BC8  0  20200268           20 DECC$SHR_EV56+CEBC8
80B68200  0  20200268           17 DECC$SHR_EV56+D0200
80B67BD8  0  20200268           16 DECC$SHR_EV56+CFBD8
80B6819C  0  20200268           14 DECC$SHR_EV56+D019C
80B670AC  0  20200268           14 DECC$SHR_EV56+CF0AC

The little DCL script I used to measure...


---- time.com ----

$! All times in Hundreds of a second. Hein van den Heuvel
$       old_krnltim = F$GETJPI ("","KRNLTIM")
$       old_exectim = F$GETJPI ("","EXECTIM")
$       old_usertim = F$GETJPI ("","USERTIM")
$       old_dirio  = F$GETJPI ("","DIRIO")
$       old_bufio  = F$GETJPI ("","BUFIO")
$       old_time   = F$TIME()
$!
$!      Run the test
$!
$       'p1 'p2 'p3 'p4 'p5 'p6 'p7
$!
$!      Save the end time
$!
$!      end_cputim = F$GETJPI ("","CPUTIM")
$       end_krnltim = F$GETJPI ("","KRNLTIM")
$       end_exectim = F$GETJPI ("","EXECTIM")
$       end_usertim = F$GETJPI ("","USERTIM")
$       end_dirio  = F$GETJPI ("","DIRIO")
$       end_bufio  = F$GETJPI ("","BUFIO")
$       end_time   = F$TIME()
$
$       elapsed = 100*(f$cvtime(end_time,,"SECONDOFYEAR") - f
$cvtime(old_time,,"SECONDOFYEAR"))
$       elapsed = elapsed + f$cvtime(end_time,,"HUNDREDTH") - f
$cvtime(old_time,,"HUNDREDTH")
$
$       WRITE sys$output -
                f$fao ( "Dirio=!6UL Bufio=!6UL Kernel=!3UL Exec=!3UL
User=!3UL Elapsed=!6UL ", -
                end_dirio - old_dirio, end_bufio - old_bufio, -
                end_krnltim - old_krnltim, end_exectim -
old_exectim,end_usertim - old_usertim,  elapsed )
$exit


Hope this helps.
Hein.




Reply via email to