Process sets/named selections and the 'twinned' server

Keisuke Miyako (5/6/14 7:11AM)


Keisuke Miyako (5/6/14 7:11 AM)

process

On 2014/05/06 6:46, "Kirk Brooks" <lists.kirk@... wrote:

color><param>00000,0000,DDEE/param>IIn my immediate case I just put
the record ids into a longint array and
passed that to the server process via a pointer and used Query with
array.
I knew that would work. ?=20

Speaking of using pointers to communicate with EOS methods - typically
when I need to run some heavy duty query and generate arrays for a
listbox
I send the params to the query method and have that method return a
blob
with the arrays in the blob.

With the ability to pass pointers I've done some of these where I pass
pointers to the arrays instead. These have seemed faster but I'm not
sure
if that's true or simply because these tend to be somewhat lighter
applications.

Any thoughts about the technicalities of the difference between the
two?
/color>
I would consider it better to pass pointer to arrays, for two reasons:

1. same code for local and remote method calls.

I assume you call COPY ARRAY and copy the pointer referenced array to a
local array.
but even if you simply pass the de-referenced pointer to the QUERY
command, same thing,
there is no memcpy since arrays are ref-counted.
so you have the added bonus of no memcpy in local mode,
and the method is ready for remote mode with the &igrave;execute on server&icirc;
property.

2. no redundant copy of array to BLOB

either way in remote mode there is still the inevitable network
transfer,
but calling VARIABLE TO BLOB to convert an array to BLOB
effectively creates a copy of the array.

I only see benefit in packaging an array in a BLOB, if,

a. you want to store it,
b. you want an array of arrays of different types (ARRAY BLOB in v14 or
ARRAY PICTURE, where each element is a packed array)
c. you want to compress it.

miyako

Reply to this message

Summary created 5/6/14 at 3:28AM by Intellex Corporation

Comments welcome at: feedback@intellexcorp.com