簡體   English   中英

變量初始化/賦值語句是單個操作還是多個操作?

[英]Is variable initialization/assignment statement is a single operation or more?

我只是在學習算法的性能分析

我的問題:是int i=0; 被算作兩個操作:輔助,初始化。或者它只是一個緊湊的操作? 我正在使用漸近分析,它使用操作數作為如何描述性能的示例

對此沒有一個正確的答案。

在某些情況下,人們可能會將單個算術運算分析為“一個”運算。 其他時候,他們可能非常關心一個操作需要多少個周期,他們可能想說,例如,添加整數比乘以浮點數更便宜。

在許多情況下,程序員說取消引用指針是O(1) 然而,如果你真的在考慮n趨於無窮大的情況,如果你的n就像宇宙的大小,那么說將一個指針解引用到那個是O(1)操作仍然有意義嗎? 在某些理論背景下,人們會說取消引用指針本質上是O(log n)

然而,我曾與一位物理學家交談過,他說即使是O(log n)也可能在物理上是不現實的——他說宇宙在給定的體積空間中可以具有最大的信息密度。 這被稱為“ Bekenstein Bound ”,事實證明最大熵是由黑洞實現的。 如果你假設在一個空間n你只能有O(n)位的內存,這基本上意味着在一個銀河大小的計算機中,位必須像球體包裝問題中的一樣被包裝,然后距離典型的一對位之間的增長為O(n^{1/3}) 由於信息不會比光速更快……也許解引用指針需要O(n^{1/3})漸近?

重點是,不要想太多。 你在漸近分析中所做的任何事情最終都是一個近似值,你只是想知道它需要多長時間。 您非常確定在您的情況下並不重要的事情,您可以分析為O(1) ,以便專注於重要的事情。 在另一種情況下,如果這些相同的事情代表了工作的“大部分”,那么您可能希望對其進行不同的分析。

IMO 如果您想知道如何在求職面試中回答有關這些問題的問題,您應該准備好以多種不同的方式對其進行分析,並向他們表明您了解諸如“does int i = 0; count as an operation”之類的事情或兩個”基本上是一個約定。

暫無
暫無

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

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