سلام؛
ورژن های ۲.۶ و ۲.۷ از python به منظور ایجاد سازگازی بیشتر با سری ۳ و راحتتر کردن پروسه انتقال کدها به سری سوم زبان ایجاد شدند و درضمن تصمیم بر این گرفته شده که سری ۲.۷ آخرین سری از سری ۲ باشه و پشتیبانی آن فقط بصورت maintenance و رفع باگ باشه.
The Python 2.7 series is scheduled to be the last major version in the 2.x series before 2.x moves into an extended maintenance period. This release contains many of the features that were first released in Python 3.1.
http://www.python.org/download/releases/2.7.1/
پس من به این نتیجه می رسم که انتقال به ۳ یک انتخاب نیست. بلکه یک الزامه.
در ضمن من در مورد کد اونو این شکلی تقییرش دادم و تست کردم:
import math
x=math.factorial(100000)
نتایج:
msk@msk-VGNCS390JBB:~$ python2.6 --version
Python 2.6.6
msk@msk-VGNCS390JBB:~$ time python2.6 fact_test_1.py
real 0m27.894s
user 0m26.590s
sys 0m0.980s
msk@msk-VGNCS390JBB:~$ python2.7 --version
Python 2.7.1+
msk@msk-VGNCS390JBB:~$ time python2.7 fact_test_1.py
real 0m7.185s
user 0m6.790s
sys 0m0.000s
msk@msk-VGNCS390JBB:~$ python3.2 --version
Python 3.2
msk@msk-VGNCS390JBB:~$ time python3.2 fact_test_1.py
real 0m0.491s
user 0m0.480s
sys 0m0.000s
msk@msk-VGNCS390JBB:~$
و یک تست دیگه با این کد تا فقط performance خود مفسرها رو ببینم*:
x=2
for i in xrange(3, 100001):
x *= i
(البته python3 دستور xrange نداره و range معادل همونه که من در تست ها جایگزین کردم.)
و نتایج:
msk@msk-VGNCS390JBB:~$ time python2.6 fact_test_2.py
real 0m28.225s
user 0m26.830s
sys 0m0.870s
msk@msk-VGNCS390JBB:~$ time python2.7 fact_test_2.py
real 0m6.827s
user 0m6.800s
sys 0m0.010s
msk@msk-VGNCS390JBB:~$ time python3.2 fact_test_2.py
real 0m8.656s
user 0m7.820s
sys 0m0.800s
msk@msk-VGNCS390JBB:~$
پس نتیجه می گیریم:
- xrange از ۲.۶ به ۲.۷ کلی بهینه سازی شده و از ۲.۷ به ۳.۲ فرق چندانی نکرده(اگه بدتر نشده باشه)
- الگوریتم math.factorial در ۲.۶ و ۲.۷ همون اگوریتم ساده لوحانه ضربه ولی در ۳.۲ یک الگوریتم درست حسابی پیاده سازی شده.
نتیجه گیری اخلاقی:
- اگه ۲.۶ یا قدیمی تر کار می کنید حتما به فکر ارتقا باشید.
- ۲.۷ ورژن خوبیه ولی باید حواستون باشه که احتمالا ۲.۸ ای درکار نخواهد بود و آبنده یعنی ورژن ۳!
موفق باشید.