Hi,
I'm looking for the right way to convert a Win32::OLE::Variant array
into a perl array or array-ref.
The problem is in the following code-snippet:
1: $DataArray=Win32::OLE::Variant->new(VT_I2|VT_ARRAY|VT_BYREF,[0,0]);
2: GetMuxData($DataArray);
3: $data = $DataArray->Value();
Line 1: supplies a SAFEARRAY* for the following function call.
Line 2: calls a function which places about 1000000 (1e6) short int (2
byte) values into the supplied variant $DataArray.
This uses/allocates approx 2 Meg. of memory (no surprise!).
Line 3: should convert the data array inside the variant into a
perl-array-ref. This it does, however, it uses approx. 28 Meg. of memory
(BIG SURPRISE!!).
So my question is, am I using the wrong way to get the 1 million data
into my perl-hands, or is there a design-problem with using large arrays
and Variants?
If I can't make this more efficient (in time and memory) I have to use
VB which is definitely not what I want!
TIA,
Thomas
--
-------------------------------------------------------
Dr. Thomas Bruns <[EMAIL PROTECTED]>
Physikalisch-Technische Bundesanstalt
Braunschweig
Fachlabor: 1.13
Bundesallee 100 Tel: 0531/592 - 1132
D-38116 Braunschweig Fax: 0531/592-69-1132
-------------------------------------------------------
_______________________________________________
Perl-Win32-Admin mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs