讓我們找出的標杆。從腳本開始:
#!/usr/bin/python
for i in xrange(100000):
print "def foo%d(): pass\n" % i
它生成一個大的Python程序。我們將它保存到foo.py
。
計劃import.py
只是做一個import foo
,(四個重複):
# time python import.py
7.83s user 0.55s system 99% cpu 8.381 total
1.52s user 0.11s system 99% cpu 1.630 total
1.54s user 0.09s system 100% cpu 1.626 total
1.48s user 0.15s system 100% cpu 1.623 total
第二個(和後續)執行速度更快,因爲Python導入foo
第一次,它包含了結果後摺痕文件foo.pyc
的解析foo.py
。這加快了模塊的所有後續導入。
計劃fromimport.py
做了from foo import foo1
,(四個重複):
# time python fromimport.py
7.81s user 0.44s system 99% cpu 8.253 total
1.48s user 0.15s system 100% cpu 1.626 total
1.52s user 0.11s system 99% cpu 1.631 total
1.49s user 0.14s system 100% cpu 1.630 total
這些時間是非常類似於以前的程序(再次,第一次是慢,因爲Python的需要解析foo.py
),其確認已經提供的其他答案的陳述在常見情況下import foo
和from foo import foo1
之間沒有顯着的性能差異。
正如其他人已經指出的那樣,這是因爲Python需要解析/運行整個文件,即使其中只有一小部分被調用者實際使用。
1.導入從不會對「複雜性」產生任何影響。我認爲你錯誤地使用了「時間複雜度」這個短語。如果您詢問「運行時間」,可能會產生微觀影響。 2.不要優化進口,爭取清晰和意義。 – 2011-02-12 13:12:58