簡體   English   中英

就軟件操作而言,“昂貴”是什么意思?

[英]What does “costly” mean in terms of software operations?

就軟件而言,運營的含義是昂貴的或資源是昂貴的。 當我遇到一些文檔時,他們提到了諸如“每次打開文件”之類的昂貴操作。 我可以有更多這樣的示例(數據庫連接是一項昂貴的操作,線程池是一種便宜的操作,依此類推)。 在什么基礎上決定任務或操作是昂貴的還是便宜的? 當我們計算此約束時要考慮什么? 是基於時間的嗎?

注意:我已經在網上檢查過了,但是沒有得到任何好的解釋。 如果您發現與我共享,我可以結束。

昂貴昂貴的操作是導致使用大量資源的操作,例如CPU,磁盤驅動器或內存

例如,在代碼中創建整數變量不是昂貴或昂貴的操作

相比之下保持關系數據庫的遠程服務器建立連接,查詢多個表並返回大結果集之前,要對其進行迭代,同時又保持與數據源的連接將(相對)昂貴或昂貴,這與我的第一個相反整數的示例。

為了構建可擴展,快速的應用程序,您通常希望將執行這些昂貴/昂貴操作的頻率最小化,在它們對軟件操作至關重要的情況下應用優化,緩存,並行化等技術。

為了獲得准確度以及應用程序中“昂貴”和“便宜”的一些實際數字,您可以使用某種性能分析或分析工具。 對於JavaScript,存在ySlow-對於.NET應用程序,是dotTrace-我可以肯定,無論使用哪種平台,都存在類似的解決方案。 然后由人來理解輸出,這可能是最重要的部分!

運行時間,內存使用或帶寬消耗是“成本”的最典型解釋。 還要考慮到它可能適用於開發時間的成本。

我將嘗試通過一些示例進行解釋:

如果您需要在數據庫的每一行中編輯兩個字段,那么一次執行一個字段將接近兩倍,就像同時完成兩個字段一樣。

額外的時間不僅浪費時間,而且連接打開的時間長於所需的時間,內存占用的時間長於所需的時間,最終,效率降低了。

開始縮放時,浪費的時間很少,這會浪費大量公司資源。

幾乎可以肯定,談論執行這種輸入/輸出會浪費時間。 大量的內存重排(復制從具有很多成員的類創建的對象)是另一種浪費時間(通過引用傳遞有助於消除大量此類浪費)。

通常,以非常簡化的方式進行的代價高昂的工作將比對內存的操作花費更長的時間。

例如,訪問文件系統中的文件並讀取每一行所花的時間要長得多,然后只需遍歷內存中相同大小的列表即可。 可以說,數據庫操作比內存操作要花費更長的時間,因此應謹慎使用,不要濫用這些操作。

我再說一次,這是一個非常簡單的解釋。 確切而言,昂貴的手段取決於您的特定上下文,所執行的操作數以及系統的整體體系結構。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM