Home >Backend Development >Python Tutorial >Why is Python Code Faster Inside Functions?
Faster Python Code within Functions: Unveiling the Optimized Execution
When executing Python code, enclosing operations within functions often leads to significant performance gains. This marked difference sparks curiosity:为何 Python 代码在函数中执行更快?
Investigating the Speed Disparity
Consider the following code snippets:
def main(): for i in xrange(10**8): pass main()
Running this code results in a time of approximately 1.8 seconds. However, when the for loop is executed outside of a function:
for i in xrange(10**8): pass
Execution takes a much longer 4.5 seconds.
Bytecode Analysis: Uncovering the Underlying Reason
To understand this performance discrepancy, we delve into the bytecode generated by Python. Inside a function, the bytecode shows a sequence of operations that set up a loop, calculate the range, and iterate through it. This structure is optimized for speed.
At the top level, the bytecode differs slightly. The variable i is declared as a global, resulting in a slower store operation (STORE_NAME) than the local store operation (STORE_FAST) used within the function.
To examine bytecode, the dis module provides valuable assistance. The following commands disassemble the function and the top-level code respectively:
import dis dis.dis(main) dis.dis(compile('for i in xrange(10**8): pass', '', 'exec'))
Conclusion
The performance advantage of executing code within functions in Python stems from optimizations in bytecode execution. The use of local variables, represented by the STORE_FAST instruction, significantly improves execution speed compared to using global variables, which involve the slower STORE_NAME instruction.
The above is the detailed content of Why is Python Code Faster Inside Functions?. For more information, please follow other related articles on the PHP Chinese website!