[ https://issues.apache.org/jira/browse/THRIFT-1107?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bryan Duxbury closed THRIFT-1107. --------------------------------- Resolution: Fixed Fix Version/s: 0.7 I just committed this. Thanks Will! > improvement for compiler-generated python for 'None' object comparisons > ----------------------------------------------------------------------- > > Key: THRIFT-1107 > URL: https://issues.apache.org/jira/browse/THRIFT-1107 > Project: Thrift > Issue Type: Improvement > Components: Python - Compiler > Reporter: Will Pierce > Assignee: Will Pierce > Fix For: 0.7 > > Attachments: THRIFT-1107.compiler_generate_py_is_not_none.patch, > test_isnotnone.py > > > The python code generator produces several python statements, especially the > {{write()}} methods' per-field code, that compares something to None using > '{{!= None}}', when it is more efficient to use the '{{is not None}}' > expression. > From what I understand, in python it's almost always true that ({{x \!= > None}}) == ({{x is not None}}), but the actual implementation and intent is > very different. The '{{\!= None}}' comparison does a by-value comparison > that does much more work than an object identity '{{is not None}}' comparison > does. > The actual performance impact isn't much, but I benchmarked the performance > of '{{x is not None}}' to '{{x \!= None}}' and got some interesting results. > In python 2.4, 2.7 and 3.1, it's about 2-3 times as fast to use '{{is not > None}}' over '{{\!= None}}'. > I'll attach a patch to switch to 'is not None', and attach a simple benchmark > test script exercising '{{is not None}}' vs. '{{\!= None}}' and post the > performance measurements to this ticket. > These URLs are somewhat relevant about this specific issue in general: > * http://www.python.org/dev/peps/pep-0008/ (Search for 'singletons', or > scroll to 'Programming Recommendations' item 2) > * > http://stackoverflow.com/questions/100732/why-is-if-not-someobj-better-than-if-someobj-none-in-python > - Stack Overflow question about the same, though it veers into the cost of > typecasting to bool, which isn't relevant here > * http://jaredgrubb.blogspot.com/2009/04/python-is-none-vs-none.html - a > similar experience and test results that match -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira