Hi Mark:

I finally had a chance to sit down and test your suggestion.  It
worked beautifully.  The speed is now on-par with that of comtypes.
Since I'm not really sure what _get_good_object_ does, anything I
should need to watch out for since I've bypassed _get_good_object_?

Brad

On Wed, Jan 26, 2011 at 9:21 PM, Mark Hammond <skippy.hamm...@gmail.com> wrote:
> On 26/01/2011 3:38 PM, Brad Buran wrote:
>>
>> I've been using win32com.client for the past year or so.  Recently, I
>> noticed that there was a bottleneck in my code, and I tracked this
>> down to _get_good_single_object (line 478).  When using comtypes
>> instead of win32com.client, calling the ReadTagVEX method on my COM
>> object is 4.8 times faster so the slowdown appears to be in
>> _get_good_object_.  The COM function in question, ReadTagVEX, is
>> supposed to return an Array of VARIANT.  These arrays are quite large
>> (on the order of 100,000 or 200,000 samples) on each read.
>>
>> I'd much rather stick with win32com.client if possible.  Are there any
>> suggestions for speeding up this function?  I already know that the
>> array returned will be an array of float32.
>
> You could just call InvokeTypes directly using a copy-paste of the generated
> makepy code - somewhat ugly, but probably effective.
>
> (There is probably an optimization opportunity to avoid the call to
> _get_good_object completely when the result of the function is other than a
> generic "object" (ie, VT_DISPATCH) or array of such objects - but in this
> case, the function declares it does return a generic VT_DISPATCH, so the
> optimization wouldn't be able to be used in this particular case...)
>
> Mark
>
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to