EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  <19951996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  <19951996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: ezcaIDL vs CaIDL
From: [email protected] (Ben-chin K. Cha)
To: [email protected], [email protected], [email protected]
Date: Mon, 6 Nov 1995 13:45:17 -0600
I have tried to do some time analysis with ezcaIDL and CaIDL.
The ezcaIDL is using the ezca interface library, and CaIDL is
using the Lca interface library.

I found out that in general that the caget in ezcaIDL is
3 times slower than CaIDL.

I also found out that the startgroup and endgroup can not handle
do loop get correctly in ezcaIDL (example is attached at the end.) 
If I use array with the 'do loop' it always return 0 (for double 
type PVs) or null string for the requested PV array. If I tried 
to redo array get for string type, ezcaIDL core dumped.  
 
In CaIDL users can request the value as string type for a 
requested array of PVs, this is particularly useful in storing
values for the mixed type of PV names within IDL. In ezcaIDL users can
not do that. Array get and put as string type is very
desirable.

Three cases have been studied, the real time used in seconds 
are tabulated in the following table. The test runs are performed
on a sparc 20 workstation.  In case 1 a caget is repeated 100
times on an AI record, in case 2 a caget is repeated 100 times
on a waveform record with float type with 4000 elements, and in 
case 3 a string caget on an array of 372 PV names is requested.


                  CaIDL             ezcaIDL

Case 1             1 sec             4 sec
Case 2             3 sec             9 sec
Case 3             2 sec             (Null Returned)


======================
EXAMPLE OF ARRAY GET in ezcaIDL
======================


PRO array1,pvnames                         ; this will work in ezcaIDL
no = n_elements(pvnames)
castartgroup
st = caget(pvnames(0),val1)
st = caget(pvnames(1),val2)
st = caget(pvnames(2),val3)
print,caendgroup()
print,pvnames(0),val1
print,pvnames(1),val2
print,pvnames(2),val3
END

PRO realarray_ezca,pvnames             ; this will not work in ezcaIDL
no = n_elements(pvnames)
val = make_array(no,/double)
castartgroup
for i=0,no-1 do begin
        st = caget(pvnames(i),val(i))
end
print,caendgroup()
for i=0,no-1 do begin
print,pvnames(i),val(i)
end
END


The above two routines test result are shown below.

IDL> x = ['chademoai1','chademoai2','chademocalc3']
IDL> array1,x			    ; correct result returned
           0
chademoai1      -17.000000
chademoai2       0.0000000
chademocalc3      -6.0000000

IDL> realarray_ezca,x                ; wrong result returned by do loop
           0
chademoai1       0.0000000
chademoai2       0.0000000
chademocalc3       0.0000000
IDL> 
 
TO do same thing as above in CaIDL, a user can simply just enter

	x = ['chademoai1','chademoai2','chademocalc3']
	val = caget(x)


Navigate by Date:
Prev: Re: Has anyone integrated the Heurikon "Nitro 60" Nick Rees
Next: Converting edd displays to edd2 Paul Martin
Index: 1994  <19951996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Has anyone integrated the Heurikon "Nitro 60" Nick Rees
Next: Re: ezcaIDL vs CaIDL Mark Rivers
Index: 1994  <19951996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·