簡體   English   中英

Array.sort(或任何集合的排序方法)是否取決於C#中單個項目的大小?

[英]does Array.sort (or any collections sort method) depends on size of an individual items in C#?

眾所周知,數組適用於sort方法。 速度受陣列中存儲的項目數影響。 但是,速度會受單個項目的大小影響嗎? 我在網上搜索了此信息,但沒有找到令人信服的答案。 有人獲得了可以在此處顯示的有用鏈接或說明嗎?

例如,我們可以有一個數組,其中存儲了100個字符串項目,這些字符串項目的長度均為20個字符串字符。 100個都是30個字符串字符的字符串項目的排序速度是否會有所不同?

謝謝

只要是引用類型,不,大小無關緊要。 無論引用指向的對象有多大,引用的大小總是相同的,因此交換兩個引用是恆定的時間,無論它們指向什么。

編輯:現在,您已經對問題進行了細化,顯然弄清楚排序順序將花費更多的時間,而比較兩個對象則更加復雜。 如果您有100個字符串,每個字符串包含100個字符,且前兩個字符不同,則對它們進行排序的速度將比具有100個字符的100個字符串(都包含98個'a',並且僅在后兩個字符中有所不同)快。

一般來說,在對性能感到疑惑之前,請確保您確實有問題。 比較100串字符串對於當今的硬件來說是花生。

否。對象的大小在幕后,sort方法將指針移動到集合中,並且指針的大小始終相同,無論它們指向的結構如何。 除了集合大小之外,排序方法時間還受比較列表中兩個對象所花費的時間量的影響。

100個都是30個字符串字符的字符串項目的排序速度是否會有所不同?

可能是的。 可能不會。 這取決於。 如果您有一串在字符30處不同的字符串,則排序所花的時間將比一串在20個字符處不同的字符串要花費更長的時間-僅僅是因為每個字符串比較都需要做更多的工作。 另一方面,如果您有一堆字符串的第一個字符不同,那么不管有多少個尾隨字符,比較都會很快。

另請注意,您使用的數據越多,CPU緩存的效率就越低,這可能會產生很大的不同。

暫無
暫無

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

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