我正在實現一個返回數組的RESTful API。我想知道在後端代碼或JavaScript中以降序對數組進行排序會更有效率嗎?前端或後端數組排序
回答
您的API將被n客戶端使用。在性能方面,讓每個客戶端自己進行排序而不是讓服務器爲所有客戶端執行排序是有意義的。簡單來說,服務器的CPU工作量較少。
此外,結果是否需要排序取決於使用數據的應用程序的性質。讓應用程序決定。
但是,在實際發生性能問題之前,我不會過度考慮性能部分。也可能是數據排序並不是很昂貴,或者根據內部信息的保存方式(例如在DBMS-s中)進行排序。
編輯
憑藉高達20行不排序,這真的沒什麼重要的區別 - 使API實現開發者的生活更輕鬆,做後端側的小分類。
這取決於您的需求。如果數據量小,則可以在FE中完成所有操作,因此用戶不必爲不同的分類加載相同的陣列。
隨着大量數據和分頁,當然最好在後端進行。
RESTful API是爲使用它的開發人員構建的。它所返回的值,它提供的錯誤,甚至是頭文件都是開發人員在使用API時的「用戶體驗」的一部分。
現在您需要對性能問題進行權衡。它可能有很多數據嗎?你能通過分頁等方式限制這些數據嗎?在未經檢查的情況下,對服務器執行長時間排序操作,不僅會爲該用戶提供嚴重降級的體驗,還會給其他用戶帶來嚴重的降級體驗。
也就是說,服務器通常具有更多的排序功能,甚至(使用正確的語言/算法)可以提供多線程方法來解決問題。所以如果你不擔心服務器端的性能影響,幾乎所有情況下我都會在服務器上執行它。
想一想這種方式..你想讓服務器做這項工作,還是個人的瀏覽器...所以效率歸結爲他們的系統硬件和軟件..任何時候你不能「典當」負載對於瀏覽器來說,服務器上的開銷會稍微大一點。但是,問題會少一些 - 簡短的答案是沒有人知道的,因爲你無法瞭解客戶端系統的所有方面。
這就是說,它只是數組解析。隨着更大(大,我的意思是巨大)數據集......你問的內容可能會略微注意到陣列的服務器端和客戶端處理之間。但是,如果它不是「巨大的」 - 從性能的角度來看,它最有可能是六個一半。
在我看來,最佳實踐是保持代碼在哪裏可以控制開銷。服務器端。
取決於數據來自哪裏,您有多少,以及您想實現什麼目標。
基於前端的解決方案是成本較低的服務器CPU,但可能會導致糟糕的用戶體驗。想象一下在舊電腦上安裝的IE中排序的100000個功能陣列?它可能會掛起瀏覽器。
所以如果你有太多的數據需要處理,或者服務器上的CPU經濟對於你使用前端非常重要,否則後端。
你已經在一個頁面上呈現100000個功能嗎?這是相當多的信息 –
是的,我做到了。單個地圖畫布上超過100000個地理點和線條。 –
- 1. 從後端到前端返回數組
- 2. 頁面系統在後端或前端
- 3. 前端和後端
- 4. grepping後排序與終端
- 5. 將數組值存儲在數據庫前端angular2後端php?
- 6. Angular.js只在前端或後端處理數據
- 7. Python後端與JS前端
- 8. 前端和後端術語
- 9. MVC .Net前端和後端
- 10. Towerjs前端和rails後端?
- 11. ASP MVC - 前端和後端
- 12. PHP前端和Django後端?
- 13. java後端和grails前端
- 14. 分離後端和前端
- 15. JSON中的NULL/AngularJS(前端)和Laravel(後端)中的數組
- 16. 圖像不顯示後端或前端 - magento 1.9.3.1 v
- 17. 無法看到前端或登錄到WordPress的後端
- 18. 乾淨的URL後端或前端的東西
- 19. 來自前端或後端的外部API調用?
- 20. 如何在Google App Engine中配置前端或後端實例?
- 21. 孤獨的程序員一起做前端後端或一個接一個
- 22. MySQL查詢後端排序結果
- 23. 如何在後端視圖中排序?
- 24. TYPO3:後端用戶組過濾前端用戶?
- 25. 組合節點後端和連接服務前端
- 26. 前端與後端解決方案組織
- 27. 多站點應用程序中的業務邏輯(前端,後端2,後端3,後端)
- 28. 使用不同於後端端口的前端端口
- 29. 諮詢導軌前端和Scala後端
- 30. Javascript Ajax前端調用asp.net C#後端
數據來自數據庫,數據有多大? – Brennan
大多數情況下,如果您使用MySQL等數據庫,後端速度會更快,但如果您期望大量流量,則可能是瓶頸。 –
@Brennan是它來自數據庫,我只拉起20行 – edash