2011-03-06 67 views

回答

10

Django是純Python。所以每個類似語句或表達式的執行時間將是相同的。有什麼需要了解,是很多很多的組件放在一起爲Web開發時,提供幾個優點:

  • 去除的共同任務到庫(AUTH,數據訪問,模板,路由)
  • 正確性算法(餅乾/會話加密)
  • 減少自定義代碼(由於庫),它直接影響的錯誤計數,開發時間等
  • 以下約定導致改善團隊的工作,並且能夠理解的代碼
  • 插件-能力;創建或查找可用於最小集成成本的新功能塊
  • 文檔和幫助;許多人都瞭解這項技術並能夠幫助(StackOverflow?)

現在,如果您要從頭開始編寫自己的網站,則需要自己實施至少幾個組件。除非您花費大量時間開發您的網站,否則您也會喪失大部分上述優勢。 Django和其他所有其他語言的Web框架都旨在提供常用的東西,並讓您直接處理業務需求。

如果您在Web框架崛起之前曾經在PHP中暴露過自定義會話代碼和數據訪問代碼,那麼您甚至不會想到與使您的工作有趣並且易於使用的框架相關的性能成本。

現在,這就是說,Django附帶很多組件。它的設計方式大多數時候不會影響你。但是,每個請求都會執行令人驚訝的代碼量。如果你用Django構建一個站點,並且性能不會削減它,你可以隨意刪除所有你不需要的部分。或者,你可以使用'slim'python框架。

真的,只是使用Django。這非常棒。它比許多你(或我)將建立的任何網站都強大許多。有很多方法可以顯着提高性能,例如利用緩存,而不是優化對定製中間件的循環。

+2

就個人而言,我不會用一個不合格的「僅使用Django」關閉 - 如果他有更高級的ORM需求,例如,與SQLAlchemy更緊密集成的框架可能是理想的。另一方面,你試圖傳達的壓倒一切的東西(不要試圖自己做什麼樣的工具可以爲你做的)是現成的。 –

+0

@Charles,這是一個公平點。有*可以使用python構建的其他框架和工具,但我推薦Django而不使用任何其他框架:P –

4

取決於你的「普通Python」如何製作網頁。例如,如果它使用模板引擎,則該引擎的性能會發生巨大變化。如果它使用數據庫,那麼使用什麼樣的數據訪問層(在該層的需求的上下文中)會有所作爲。

因此,這個問題成爲了一個問題,即你的任意(和現在未說明的)工具鏈選擇是否比Django選擇的具有更好的運行時性能。如果績效是您的首要目標,那麼您當然應該能夠做出更優化的選擇。但是,就整體成本而言 - 即。爲較慢的運行時選項購買更多的Web服務器,而購買更多的程序員時間以供開發更多的選項 - 這個問題只是有太多的開放元素需要回答。

+0

嗯,我只是要使用.py文件,顯示從服務器的HTML等。我的意思是如果差異不是很大,我寧願使用django之類的東西來維護母版頁等。 – vol4life27

+0

+1。 @Corey:Django只是python。你計劃在你的「平原蟒蛇」中實現多少django我不知道,但總的來說,我沒有看到重新發明輪子的好處 - 你仍然在使用第三方模板引擎,數據庫接口,數據庫本身等。 –

+2

@Corey:即使你的'.py'文件只是「打印」到「stdout」來顯示HTML等,中間需要有一些粘合劑來將請求轉換成web服務器轉換爲Python解釋器將理解的輸入,並正確分配它們以最終執行.py文件。那麼你需要自己實現這個中間件來做一個很好的比較。但是,「腳本」結束和Web框架開始在哪裏?最後,你基本上試圖重塑Django,或者自己實現一個新的框架。 – Santa

1

Django也是普通Python

查看性能主要取決於代碼的效率。

軟件的大多數性能問題都來自低效的代碼,而不是工具和語言的選擇。所以執行很重要。 AFAIK Django出色地完成了這項工作,並且它的性能超出了標準。

+0

我不確定我可以同意Django的性能高於平均水平。剖析我的僱主非常龐大的應用程序,我驚訝地發現,我們的時間過多不是花在自定義邏輯或數據庫訪問上,而是花在模板渲染上(而不是模板調用的應用程序代碼,而是渲染過程本身)!可以肯定的是,設計不同的模板可能會減少引擎的壓力 - 但即便如此,結果也不是一種自信的表決。 –

2

不成熟的優化是所有邪惡的根源。

如果您正在進行Web開發,Django使事情非常方便。如果你正在進行認真的工作,那麼再加上一個擁有數百個常用任務插件的優秀社區是真正的福音。

即使您的「原始」實現速度更快,我認爲它不會很快就會嚴重影響您的Web應用程序。使用在正確的抽象級別工作的工具構建它,並且如果性能是一個問題,那麼測量它並找出瓶頸位置並應用優化。如果畢竟你發現Django創建的抽象是減慢你的應用程序的速度(我不認爲他們會這樣做),你可以考慮移動到另一個框架或者手動編寫一些東西。您可能會發現,通過緩存,多臺服務器之間的負載平衡以及執行「常規技巧」,而不是通過重新實現Web框架本身,您可以獲得性能提升。

相關問題