Dua Cara Bermain Dengan Array Dalam Pemrograman VB.Net

VB .Net menghadirkan dua jenis array, yang pertama adalah array normal yang dapat kita deklarasikandengan sebuah variabel menggunakan tanda (), dan yang kedua adalah dengan cara membuat array objek dari class Array yang dibawa oleh VB.Net. Class Array menyediakan beberapa metode spesial untuk memanipulasi array seperti reversing, sorting dan searching.
Berikut adalah cara pertama yaitu dengan mendeklarasikan variable myArray dengan menambahkan karakter () dibelakang variable.

Private Sub firstArray()
 Dim myArray(10) As Integer
 For i As Integer = 0 To 10
     myArray(i) = i * i
 Next

Dim txt As String = " "
 For i As Integer = 0 To 10
   txt &= myArray(i) & vbCrLf
 Next
 MsgBox(txt)

End Sub.


Sedangkan berikut ini adalah cara kedua yaitu dengan membuat objek myArray dari Class Array melalui method CreateInstance.

Private Sub secondArray()
Dim myArray As Array = Array.CreateInstance(GetType(Integer), 11)
For i As Integer = 0 To 10
   myArray.SetValue(i * i, i)
Next

Dim txt As String = ""

For i As Integer = 0 To 10
   txt &= myArray.GetValue(i).ToString & vbCrLf
Next
MsgBox(txt)

End Sub.


Untuk cara diatas jika Option Strict Off, kita dapat memberi nilai array dengan cara myArray(i) = i * I, tetapi jika Option Strict On kita harus menggunakan myArray.SetValue(i * i, i). Begitu pula dengan pengambilan nilai jika Option Strict Off, pengambilan nilai array dapat dilakukan dengan myArray(i).ToString, tetapi jika Option Strict On, maka pengambilan nilai harus melalui myArray.GetValue(i).ToString.

Resizing

Untuk mengubah ukuran array normal kita dapat menggunakan keyword ReDim dan tambahkan keyword Preserve jika kita ingin mempetahankan nilai yang sudah ada.

Contoh :
Dim myArray(100) As Integer

Untuk mengubah ukuran menjadi 200 tetapi tidak ingin mempetahankan nilai yang sudah ada :
ReDim myArray(200) As Integer


Untuk mengubah ukuran menjadi 200 tetapi nilai yang sudah ada akan dipertahankan :
ReDim Preserve myArray(200) As Integer

Sedangkan untuk array objek kita tidak dapat merubah ukurannya yang sudah diset pada saat deklarasi, akan tetapi dapat diakali dengan cara mengcopy objek array ke objek array yang baru dengan catatan destination objek array length tidak lebih kecil dari pada source objek array.

Contoh :
Dim myArray As Array = Array.CreateInstance(GetType(Integer), 100)
Dim myArray1 As Array = Array.CreateInstance(GetType(Integer), 200)
myArray.CopyTo(myArray1, 0)

Speed

Dengan beberapa keunggulan yang dimiliki array objek seperti adanya reserving, sorting dan searching, mungkin kita akan lebih senang menggunakan array ini dari pada menggunakan array normal, akan tetapi sebelum menentukan pilihan akan lebih bijak jika kita mengetahui sedikit tentang kecepatan yang dimiliki oleh masing-masing jenis array.

Untuk masalah kecepatan, array dari variabel akan lebih cepat dari pada array objek, namun jika aplikasi anda mengolah array yang panjangnya hanya sampai ribuan, perbedaan kecepatan mungkin tidak berarti, tetapi akan berbeda jika panjang array yang anda olah sudah sampai jutaan, diposisi ini anda harus mempertimbangkan lebih baik menggunakan array variable dari pada array object.

Dari salah satu sumber yang pernah saya baca, untuk membuat 10 juta array 1-D dan 2-D, array normal membutuhkan waktu sekitar 0,1092 baik untuk array 1-D maupun array 2-D, sedangkan array objek membutuhkan waktu 1,2636 untuk array 1-D dan 1,4508 untuk array 2-D.

Reserving

Jika terdapat banyak item yang harus anda tambahkan ke dalam elemen array, maka kita dapat menggunakan cara yang lebih efisien yaitu dengan menggunakan metode reserveCapacity(). Namun, walaupun metode ini memang dapat membuat kode program menjadi lebih cepat, jika kuta tidak hati-hati dalam penggunaannya, maka metode ini dapat mengakibatkan program jauh lebih lambat, jadi kita harus lebih waspada dalam penggunaannya.

Pertama, yang harus kita ketahui adalah cara kerja array. Jika kita hanya menggunakan array untuk penyimpanan sebanyak empat item, maka memori akan mengalokasikan kapasitas yang cukup untuk array itu yang hanya dapat menampung empat item tersebut. Sehingga perintah MyArray.count atau MyArray.capacity tetap akan bernilai sebesar 4.

Sekarang katakanlah kita ingin menambahkan item baru yaitu yang kelima. Maka disini array tentu saja tidak memiliki kapasitas untuk itu, sehingga perlu membuat ruang baru, itu artinya memori memori untuk menyimpan lebih banyak item dari sebelumnya, salah satu caranya adalah dengan menyalin array yang ada lalu menambahkan item baru (item kelima) pada array tersebut. Dengan cara ini maka akan memiliki waktu pada saat  dijalankan adalah O(n), di mana n adalah jumlah item dalam array.

Untuk menghindari realokasi konstan, maka kita harus menggunakan pola pertumbuhan geometris (geometric growth pattern) untuk menangani kapasitas array sehingga dapat meningkatkan kapasitas array secara eksponensial dibandingkan jika array dalam keadaan jumlah yang tetap. Jadi, ketika kita menambahkan item kelima pada array dengan kapasitas 4 item, dengan pola ini ukuran array akan diubah sehingga memiliki kapasitas array sebanyak 8 item. Dan ketika item baru diperlukan (array pada item ke 9) maka secara otomatis array akan mendapatkan kapasitas baru sebesar 16 item, begitu pula seterusnya menjadi 32 item, kemudian 64 item, dan seterusnya, setiap metode pada pola tersebut dijalankan akan menambah satu kali lipat dari jumlah array sebelumnya.

Jika kita memiliki array yang menyimpan data maksimum sebanyak 512 item, maka dengan menggunakan metode reserveCapacity() ini dapat memungkinkan memori array seminimal mungkin yang dapat menampung kurang dari 512 item, kemudian jika data bertambah jumlah item array akan bertambah sebanyak satu kali lipat dari jumlah sebelumnya hingga jumlah keseluruhan array tersebut sebanyak 512 item.

Berikut ini adalah contoh penggunaan metode reserveCapacity() :
var randomNumbers = [Int]()
randomNumbers.reserveCapacity(512)

for _ in 1...512 {
    randomNumbers.append(Int.random(in: 1...10))
}
Metode reserveCapacity() juga memiliki run time O(n) berdasarkan pada jumlah elemen dalam array, jadi metode ini dapat kita jalankan mulai dari jumlah item array masih sedikit.

Masukan alamat email anda untuk mendapatkan artikel terbaru:

0 Response to "Dua Cara Bermain Dengan Array Dalam Pemrograman VB.Net"

Posting Komentar