[ 
https://issues.apache.org/jira/browse/THRIFT-1088?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Will Pierce updated THRIFT-1088:
--------------------------------

    Attachment: runtest2.sh

Fixed runtest.sh (now called runtest2.sh) shell script so it will re-run 'make' 
before initial perftest.py run, and after patching the source but before it 
runs perftest.py.  

The previous runtest.sh didn't actually test the patch, because the perftest.py 
code  includes the files from ./lib/py/build/lib* not ./lib/py/src/  So this 
updated runtest2.sh script ensures the ./lib/py/build/lib* directories are 
updated before each run.

I'll post new performance measurements output in a minute.

> Thrift library python classes should be new-style classes
> ---------------------------------------------------------
>
>                 Key: THRIFT-1088
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1088
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Python - Library
>    Affects Versions: 0.6
>            Reporter: Will Pierce
>            Priority: Minor
>         Attachments: THRIFT-1088_pthon_new_style_classes.patch, perftest.py, 
> runtest.sh, runtest2.sh
>
>
> The included python thrift library classes (TType, TProtocolBase, etc...) are 
> all defined using old-style python class definitions.  This makes it somewhat 
> more difficult to dynamically deal with instances of those classes at 
> runtime, since the type() builtin doesn't return the class name.  I don't 
> think there's really any good reason for avoiding using new style classes.  
> The typical fear/uncertainty/doubt with new-style classes (since 2001 when 
> they were made available in python 2.2) is that they are thought to be slower 
> than old-style classes.  I personally haven't ever found the performance 
> difference between old and new style classes to 
> Unless there's a compelling reason that Thrift developers want to use 
> old-style classes, I think it's a more programmer-friendly choice to switch 
> these to new-style classes.  Not to mention the benefits that new style 
> classes provide, see: 
> http://realmike.org/blog/2010/07/18/introduction-to-new-style-classes-in-python/
>  
> The following thrift classes don't inherit from the 'object' class, so are 
> old-style classes:
> {noformat}
> % find . -name \*py | xargs grep class | grep -v [.]svn | grep '[a-zA-Z0-9]:$'
> ./src/protocol/TCompactProtocol.py:class CompactType:
> ./src/protocol/TCompactProtocol.py:class TCompactProtocolFactory:
> ./src/protocol/TProtocol.py:class TProtocolBase:
> ./src/protocol/TProtocol.py:class TProtocolFactory:
> ./src/protocol/TBinaryProtocol.py:class TBinaryProtocolFactory:
> ./src/protocol/TBinaryProtocol.py:class TBinaryProtocolAcceleratedFactory:
> ./src/Thrift.py:class TType:
> ./src/Thrift.py:class TMessageType:
> ./src/Thrift.py:class TProcessor:
> ./src/server/TServer.py:class TServer:
> ./src/server/TNonblockingServer.py:class Connection:
> ./src/server/TNonblockingServer.py:class TNonblockingServer:
> ./src/transport/TTransport.py:class TTransportBase:
> ./src/transport/TTransport.py:class CReadableTransport:
> ./src/transport/TTransport.py:class TServerTransportBase:
> ./src/transport/TTransport.py:class TTransportFactoryBase:
> ./src/transport/TTransport.py:class TBufferedTransportFactory:
> ./src/transport/TTransport.py:class TFramedTransportFactory:
> {noformat}
> I'll make changes to my local copy of trunk, run the tests and then attach a 
> patch to this ticket for evaluation.
> Unless anyone has objections or concerns about switching to new style classes?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to