轉帖|其它|編輯:郝浩|2010-08-17 10:10:56.000|閱讀 644 次
概述:鋸齒形數組,也稱作數組的數組,不僅僅提供在某種條件下的空間存儲,而且提供了加強執行。在本文中,我們將使用一個多維數組和一個鋸齒形數組保存一年中的每一天的任意值。兩個多維數組將允許我們通過提供月份和天的索引,得到一年中的任何一天。我們應用以下語法聲明數組。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
鋸齒形數組,也稱作數組的數組,不僅僅提供在某種條件下的空間存儲,而且提供了加強執行。
在.net中可以使用有的三種類型數組:一維數組,多維數組和鋸齒形數組。鋸齒形數組,也稱作數組的數組,不僅僅在某種條件下提供存儲空間,而且象我們示范的一樣提供增強執行。
在本文中,我們將使用一個多維數組和一個鋸齒形數組保存一年中的每一天的任意值。兩個多維數組將允許我們通過提供月份和天的索引,得到一年中的任何一天。我們應用以下語法聲明數組。
Privatemulti(12,31)AsInteger
Privatejagged(12)()AsInteger
注意對于多維數組,我們需要聲使用在一個月中可能出天的天數(31)的最大值來聲明第二維。在這兩維中,既然每一行有同樣的列數,可以將一個多維數組考慮成一個方形的。這將導致與一個有效相關的而非所有數組輸入的空間浪費,例如,在四月中沒有31天。
另一方面,鋸形數組允許你對每一行分配不同列數。在GreateArrays的下列子程序中,在循環之中裝配兩個數組。注意:鋸齒形數組初始化包括附加一步來對每一個月的天數數組分配內存。與多維數組比較起來,對需要的一個月份使用精確數量的存儲會節省一少部分存儲器。用數組描述年歷節省的空間是少量的,但是其它程序節省空間可能是非常重要的。
PrivateSubCreateArrays()
DimiAsInteger
DimjAsInteger
DimrandomAsNewRandom()
'initializemultidimensionarraywithrandomdataforeachday
Fori=0To11
Forj=0ToDateTime.DaysInMonth(DateTime.Now.Year,i 1)-1
multi(i,j)=random.Next(100)
Next
Next
'allocateandinitializejaggedarraywithrandomdata
Fori=0To11
jagged(i)=NewInteger(DateTime.DaysInMonth(DateTime.Now.Year,i 1)){}
Forj=1ToDateTime.DaysInMonth(DateTime.Now.Year,i 1)-1
jagged(i)(j)=random.Next(100)
Next
Next
EndSub
顯而易見,與一個多維數組相比時候,鋸齒形數組因為在循環中分配內存步驟而多需要一小部分時間。然而,當提到存儲和重述數組時,你會對鋸齒形數組做得比多維數組做的好時而驚奇。在.NETFramework版本1中,在鋸齒形數組的JIT編譯器中,已存在了較好的最優化。為了證明這一點,讓我們看一看當每次運行測試頁時兩個最好的子程序。
PrivateSubTestSquareArray()
Trace.Write("BeginningTestSquareArray")
DimiAsInteger
DimjAsInteger
DimkAsInteger
DimsumAsInt64
sum=0
Fori=0To65525
Forj=0To11
Fork=0ToDateTime.DaysInMonth(DateTime.Now.Year,j 1)-1
sum=sum multi(j,k)
Next
Next
Next
Trace.Write("EndingTestSquareArray")
EndSub
PrivateSubTestJaggedArray()
Trace.Write("BeginningTestJaggedArray")
DimiAsInteger
DimjAsInteger
DimkAsInteger
DimsumAsInt64
sum=0
Fori=0To65525
Forj=0To11
Fork=0ToDateTime.DaysInMonth(DateTime.Now.Year,j 1)-1
sum=sum jagged(j)(k)
Next
Next
Next
Trace.Write("EndingTestJaggedArray")
EndSub
每一個子程序將每一個數組內的值加求和。我們在另一個大循環中反復這樣做,延長計算時間和查看更多的意味深長的時間信息。在我們能夠追蹤之后,我們能夠看下列網頁顯示的時間信息。存取鋸齒形數組的程序往往比多維數組版的快20%。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載