Di antara banyak teknik untuk mengoptimalkan ukuran kode program, sebagian besar mencakup penghapusan elemen yang tidak diperlukan dari kode. Visual Basic secara otomatis menghapus elemen tertentu saat mengkompilasi suatu aplikasi. Tidak ada batasan panjang atau jumlah nama pengenal, komentar, dan baris kosong. Saat aplikasi dijalankan sebagai file .EXE, elemen ini tidak akan mempengaruhi ukuran memori yang ditempati oleh aplikasi. Elemen lain, seperti variabel, bentuk, dan prosedur, memang memakan sejumlah ruang di memori. Lebih baik menyederhanakannya agar lebih efisien. Berikut ini adalah 6 cara yang dapat digunakan untuk mengurangi memori yang dibutuhkan oleh aplikasi dan memperkecil ukuran kode, semoga bermanfaat bagi pemula.
1. Kurangi jumlah pemuatan formulir dan kontrol dan gunakan label sebagai pengganti kotak teks
Setiap formulir yang dimuat, baik terlihat atau tidak, menempati sejumlah memori (jumlahnya bervariasi tergantung pada jenis dan jumlah kontrol pada formulir, ukuran bitmap pada formulir, dll.). Muat formulir hanya saat Anda perlu menampilkannya, dan keluarkan formulir saat tidak diperlukan lagi (daripada menyembunyikan formulir). Ingat, referensi apa pun ke properti formulir, metode, atau kontrol, atau ke variabel formulir yang dideklarasikan dengan Baru, akan menyebabkan Visual Basic memuat formulir.
Saat menggunakan metode Bongkar untuk membongkar formulir, hanya sebagian ruang yang ditempati formulir yang dapat dibebaskan. Untuk mengosongkan semua ruang, gunakan kata kunci Nothing untuk membatalkan referensi formulir:
Saat mendesain aplikasi, formulir harus menggunakan kontrol sesedikit mungkin. Batas sebenarnya bergantung pada jenis kontrol dan sistem, namun dalam praktiknya, formulir dengan jumlah kontrol yang banyak akan berjalan lambat. Teknik yang terkait adalah dengan menggunakan array kontrol bila memungkinkan saat mendesain, daripada menempatkan sejumlah besar kontrol dengan tipe yang sama pada formulir. Array kontrol adalah sekelompok kontrol dengan nama dan tipe yang sama. Rangkaian peristiwa mereka juga sama. Pada waktu desain, menambahkan kontrol menggunakan array kontrol menghabiskan lebih sedikit sumber daya dibandingkan menambahkan beberapa kontrol dengan tipe yang sama langsung ke formulir. Array kontrol juga berguna ketika Anda ingin beberapa kontrol berbagi kode. Kontrol label Label menggunakan lebih sedikit sumber daya Windows dibandingkan kotak teks Kotak Teks, jadi bila memungkinkan, label harus digunakan sebagai pengganti kotak teks. Misalnya, ketika kontrol tersembunyi pada formulir perlu menampung teks, penggunaan label akan lebih efektif.
2. Gunakan file atau sumber daya disk dan modul organisasi
Data yang ditempatkan langsung ke dalam aplikasi pada waktu desain (seperti string literal dan nilai dalam properti atau kode) akan meningkatkan memori yang ditempati oleh aplikasi saat runtime. Memuat data dari file atau sumber daya disk saat runtime mengurangi penggunaan memori. Ini sangat berharga untuk bitmap dan string berukuran besar. File sumber daya sebenarnya terdiri dari serangkaian string independen, bitmap, atau item lain, yang masing-masing memiliki pengidentifikasi unik. File sumber daya dapat dibuat menggunakan editor teks dan kompiler sumber daya serupa dengan yang disediakan di Microsoft Visual C. File sumber daya yang dikompilasi memiliki ekstensi .res.
Visual Basic hanya memuat modul ketika diperlukan, yaitu ketika kode memanggil prosedur dalam modul, modul tersebut dimuat ke dalam memori. Jika suatu prosedur dalam modul tertentu tidak pernah dipanggil, Visual Basic tidak pernah memuat modul tersebut. Oleh karena itu, cobalah untuk meletakkan prosedur terkait dalam modul yang sama dan biarkan Visual Basic memuat modul hanya jika diperlukan.
3. Pertimbangkan untuk mengganti tipe data Varian
Tipe data Varian sangat fleksibel untuk digunakan, namun memakan lebih banyak memori dibandingkan tipe data lainnya. Saat Anda ingin mengompresi kelebihan ruang di aplikasi Anda, Anda harus mempertimbangkan untuk mengganti variabel Varian dengan tipe data lain, terutama mengganti array variabel Varian.
Setiap Varian menempati 16 byte, sedangkan Integer menempati 2 byte dan Double menempati 8 byte. Variabel string dengan panjang variabel memerlukan 4 byte ditambah 1 byte untuk setiap karakter dalam string. Namun, setiap Varian yang berisi string memerlukan 16 byte ditambah 1 byte untuk setiap karakter dalam string. Karena ukurannya yang sangat besar, variabel Varian sangat mengganggu ketika digunakan sebagai variabel lokal atau argumen pada prosedur karena variabel tersebut menghabiskan ruang tumpukan terlalu cepat. Namun dalam beberapa kasus, penggunaan tipe data lain selain Varian akan mengurangi fleksibilitas, dan lebih banyak kode harus ditambahkan untuk mengganti fleksibilitas yang hilang. Hasilnya adalah tidak ada pengurangan ukuran yang nyata.
4. Gunakan array dinamis dan dapatkan kembali memori saat menghapus
Gunakan array dinamis daripada array tetap. Ketika data array dinamis tidak lagi diperlukan, gunakan Erase atau ReDimPReserve untuk membuang data yang tidak diperlukan dan mendapatkan kembali memori yang digunakan oleh array. Misalnya, gunakan kode berikut untuk mendapatkan kembali ruang yang digunakan oleh array dinamis:
Di sini, Erase menghapus seluruh array, sedangkan ReDimPreserve hanya memperpendek array tanpa kehilangan isinya:
Menghapus array berukuran tetap tidak akan mendapatkan kembali ruang yang ditempati oleh array—hanya menghapus nilai dari setiap elemen array. Jika elemennya adalah string, atau Varian yang berisi string atau array, maka menghapus array akan mengambil kembali memori yang ditempati oleh string atau Varian tersebut, bukan memori yang ditempati oleh array itu sendiri.
5. Mendapatkan kembali ruang yang digunakan oleh variabel string atau objek
Ketika proses berakhir, ruang yang digunakan oleh variabel string dan array lokal (non-statis) dapat diambil kembali secara otomatis. Namun, variabel string dan array tingkat global dan modul bertahan hingga akhir keseluruhan program. Jika Anda ingin aplikasi Anda sekecil mungkin, Anda harus mendapatkan kembali ruang yang digunakan oleh variabel-variabel ini sebanyak mungkin. Menetapkan string dengan panjang nol ke variabel string akan mendapatkan kembali ruangnya:
Demikian pula, menyetel variabel objek ke Nothing akan mengambil kembali sebagian (tapi tidak semua) ruang yang digunakan oleh objek. Misalnya, untuk menghapus variabel objek Formulir:
Bahkan jika Anda tidak menggunakan variabel formulir eksplisit, Anda harus berhati-hati saat membongkar formulir yang tidak lagi digunakan, daripada menyembunyikannya begitu saja.
6. Hilangkan kode mati dan variabel tidak berguna
Saat Anda mengembangkan dan memodifikasi aplikasi, Anda mungkin mendapatkan kode mati—seluruh proses dalam kode Anda yang tidak dipanggil di mana pun. Mungkin juga ada beberapa variabel yang tidak digunakan yang dideklarasikan. Meskipun Visual Basic memang dapat menghapus konstanta yang tidak berguna saat membuat file .exe, Visual Basic tidak dapat menghapus variabel yang tidak berguna dan kode mati. Berhati-hatilah saat meninjau kode Anda untuk menemukan dan menghapus variabel tidak berguna dan kode mati. Misalnya, pernyataan Debug.Print diabaikan saat menjalankan .exe, namun sering muncul di file .exe.
Saat membuat file .exe, pernyataan Debug.Print yang berisi string dan variabel sebagai parameter tidak dikompilasi. Namun untuk pernyataan Debug.Print yang berisi fungsi sebagai parameter, pernyataan itu sendiri diabaikan oleh kompiler, dan fungsi tersebut dikompilasi. Jadi saat aplikasi sedang berjalan, fungsinya dipanggil tetapi nilai kembaliannya diabaikan. Karena pada file .exe, ketika fungsi tersebut muncul sebagai parameter Debug.Print, akan memakan ruang dan waktu siklus CPU, jadi sebaiknya hapus pernyataan ini sebelum membuat file exe.
Gunakan perintah Temukan di menu Edit untuk mencari referensi ke variabel tertentu. Atau ketika setiap modul berisi pernyataan OptionExplicit, Anda dapat dengan cepat mengetahui apakah variabel tersebut digunakan dengan menghapus atau mengomentari deklarasi variabel dan menjalankan aplikasi. Jika variabel ini digunakan, Visual Basic akan error. Jika tidak terjadi kesalahan maka variabel tidak digunakan. ->