|
Michael P wrote:
>I wanted to see if you folks have found that ADDDUR and
>SUBDUR (etc.), and MOVEing to/from date fields are
>REALLY poor performers - it sure seems that way to me.
This is an interesting sort of question. Is CHAIN slower than READ? Well,
yes. But they do different things. I could emulate CHAIN with READ but it
wouldn't be much fun to maintain. Likewise, I can emulate date operations
using integers or packed decimals...
Mike H said:
>...someone mentioned they thought they took a 40% performance
>hit when using date fields and date logic
It made me wonder what the comparison was to, so I wrote a quickie program
to time some very simple operations:
h debug option(*srcstmt) dftactgrp(*no) actgrp('QILE')
* dbgview(*list)
d packed s 11p 0
d int s 10i 0
d date s d
d start s z
d stop s z
d elapsed s 10i 0
d loop s 10i 0 inz(100000)
* baseline?
c eval packed = 0
c time start
c do loop
c add 1 packed
c enddo
c time stop
c stop subdur start elapsed:*ms
c elapsed dsply
* fastest?
c eval int = 0
c time start
c do loop
c add 1 int
c enddo
c time stop
c stop subdur start elapsed:*ms
c elapsed dsply
* compare date...
c time date
c time start
c do loop
c adddur 1: *d date
c enddo
c time stop
c stop subdur start elapsed:*ms
c elapsed dsply
c eval *inlr = *on
Several runs look similar to this:
call datetiming
DSPLY 79000
DSPLY 33000
DSPLY 7947000
call datetiming
DSPLY 93000
DSPLY 35000
DSPLY 8434000
call datetiming
DSPLY 113000
DSPLY 33000
DSPLY 9183000
call datetiming
DSPLY 79000
DSPLY 33000
DSPLY 7769000
call datetiming
DSPLY 79000
DSPLY 33000
DSPLY 7864000
call datetiming
DSPLY 80000
DSPLY 34000
DSPLY 7876000
523 / 6 = 87.17
201 / 6 = 33.5
49073 / 6 = 8178.83
This is on my 620, V5R2 1gig machine. If we look at incrementing an integer
as 1x, incrementing a packed field is 2.6x slower and incrementing a date is
244.14x slower. If you need the date functionality, then you need it, no
matter the runtime cost (like CHAIN over READ.)
OPTIMIZE(*FULL) made very little difference in this test, except to make
integers even faster, about 19ms instead of 33ms per hundred thousand ops.
call datetiming
DSPLY 59000
DSPLY 19000
DSPLY 7895000
call datetiming
DSPLY 65000
DSPLY 19000
DSPLY 7848000
call datetiming
DSPLY 97000
DSPLY 19000
DSPLY 8192000
call datetiming
DSPLY 59000
DSPLY 19000
DSPLY 8220000
call datetiming
DSPLY 96000
DSPLY 20000
DSPLY 9929000
call datetiming
DSPLY 59000
DSPLY 19000
DSPLY 7866000
So on my box, incrementing a date costs about 82ms each.
--buck
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.