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.