I'm interested in this as well. We wrote a simple mesh exporter getting all
verts per frame and it was *significantly* faster using a compiled one
compared to the scripted plugin. (well as you say about 10 times). All it
was doing really was calling MFnMesh.getPoints in both versions..

I wondered if it's maybe so slow to get all the queried data into a python
list (or array which was a bit faster I if I remember correctly)..

Any insight very welcome :)

On Thu, Nov 6, 2008 at 8:05 PM, Horvátth Szabolcs <[EMAIL PROTECTED]>wrote:

>
> Hi,
>
> A while ago I did some experiments with python based data export and
> found that there are very significant speed differenced between Python
> API and C++ API when using the MFnPfxGeometry class. I created a simple
> pfxdata export command using both languages (using similar queries,
> loops and stuff) and found that in my test scenes the speed difference
> is about 8 - 10 times.
> (I removed every string operation, file output, data accumulation stuff,
> the command only did the important data query and all variable
> allocations were optimized.)
>
> After Matthew Chapman's suggestion I tried doing some profiling using
> python's profiler library (cool stuff BTW) and got the data attached to
> the end of the mail. The question is: is there anything I can do to
> speed up the code based on the profiler's output (that I can't really
> comprehend by myself) or do I have to simply forget the Python API as an
> exporter? Or is it just a limitation of the MFnPfxGeometry class? Do you
> experience such speed differences in other API areas?
>
> Thanks for any tips in advance!
>
> Cheers,
> Szabolcs
>
> ---
>
>   8211552 function calls in 40.582 CPU seconds
>
>   Ordered by: cumulative time
>   List reduced from 75 to 10 due to restriction <10>
>
>   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
>        1    0.000    0.000   40.582   40.582
> profile:0(profileTestProcNoStrings())
>        1    0.000    0.000   40.581   40.581 <string>:1(?)
>        1    4.384    4.384   40.581   40.581 <maya
> console>:2(profileTestProcNoStrings)
>   384000    2.417    0.000   29.618    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9481(__getitem__)
>   384000    3.924    0.000   27.201    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9565(__init__)
>  1254430    5.139    0.000   16.562    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:21(_swig_setattr)
>  1254430    7.826    0.000   11.423    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:7(_swig_setattr_nondynamic)
>   422420    2.586    0.000    7.333    0.000 :0(hasattr)
>   384000    1.352    0.000    5.699    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9505(<lambda>)
>   384000    1.422    0.000    4.313    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9507(<lambda>)
>
>
>   Ordered by: internal time
>
>   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
>  1254430    7.826    0.000   11.423    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:7(_swig_setattr_nondynamic)
>  1254430    5.139    0.000   16.562    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:21(_swig_setattr)
>        1    4.384    4.384   40.581   40.581 <maya
> console>:2(profileTestProcNoStrings)
>   384000    3.924    0.000   27.201    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9565(__init__)
>  1728070    3.050    0.000    3.050    0.000 :0(get)
>   422420    2.586    0.000    7.333    0.000 :0(hasattr)
>   384000    2.417    0.000   29.618    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9481(__getitem__)
>   409610    2.383    0.000    3.084    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:24(_swig_getattr)
>   384000    1.490    0.000    1.490    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9524(__getitem__)
>   384000    1.422    0.000    4.313    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9507(<lambda>)
>
>
>
>   Ordered by: call count
>
>   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
>  1728070    3.050    0.000    3.050    0.000 :0(get)
>  1254430    5.139    0.000   16.562    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:21(_swig_setattr)
>  1254430    7.826    0.000   11.423    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:7(_swig_setattr_nondynamic)
>   422420    2.586    0.000    7.333    0.000 :0(hasattr)
>   422420    1.402    0.000    1.402    0.000 :0(isinstance)
>   409610    2.383    0.000    3.084    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:24(_swig_getattr)
>   384000    0.803    0.000    0.803    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9517(__del__)
>   384000    3.924    0.000   27.201    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9565(__init__)
>   384000    1.352    0.000    5.699    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9505(<lambda>)
>   384000    1.422    0.000    4.313    0.000
>
> C:\engserv\rbuild\164\build\wrk\optim\runTime\Python\Lib\site-packages\maya\OpenMaya.py:9507(<lambda>)
>
>
> >
>


-- 
Sebastian Schoellhammer

Sr. Technical Artist
Square Enix LTD
www.square-enix.com

--~--~---------~--~----~------------~-------~--~----~
Yours,
Maya-Python Club Team.
-~----------~----~----~----~------~----~------~--~---

Reply via email to