―BIVE Contoh (Kelas Jadwal Siswa) -
Metode pemrosesan berpikir normal dan metode pemrosesan optimasi:
Misalnya, kelas penjadwalan untuk siswa. Siswa dan kursus adalah hubungan banyak-ke-banyak.
Menurut logika normal, harus ada tabel asosiasi untuk mempertahankan hubungan antara keduanya.
Sekarang tambahkan kendala untuk verifikasi. Misalnya: Kursus Zhang San belajar semester lalu tidak boleh dijadwalkan untuk kursus seperti itu saat penjadwalan kelas.
Oleh karena itu, tabel kendala (mis., Tabel kelas historis) perlu muncul.
Artinya: Jadwal pemilihan kursus siswa memerlukan tabel kelas siswa sebagai kendala.
―Scheme 1: Metode pemrosesan normal -
Ketika seorang siswa mengambil pilihan kursus lagi. Anda perlu memeriksa jadwal pemilihan kursus siswa untuk melihat apakah sudah ada.
Artinya, verifikasi berikut adalah:
// query Apakah data dengan kode siswa dan kode kursus A dan B masing -masing ada // Daftar set menyimpan semua data catatan pemilihan kursus siswa dalam daftar <sperwesentRecordentity> listStudentRecord = service.findall (); // query Data untuk melihat apakah StudentRecordentity sudah ada ensr = listStudentRecord.find (s => s.studentCode == a && s.code == b); If (ensr == null) {// siswa tidak memilih kursus ini // ....} else {// siswa telah memilih kursus ini // ....}Kode di atas sangat ringkas. Dan sangat mudah dimengerti.
Pertama, misalkan ada 5.000 siswa dan 100 kursus. Kemudian untuk kumpulan data bagi siswa untuk memilih kursus, volume data akan menjadi 5.000*100. Volume data akan menjadi urutan besarnya level 100.000.
Di antara 100.000 data, permintaan catatan siswa = kursus = B. Eksekusi tidak akan efisien. Karena kueri metode temukan juga di mana kueri, yaitu, mencari dengan melintasi kumpulan data.
Jadi, gunakan kode di atas. Ketika volume data meningkat secara bertahap, efisiensi eksekusi program akan turun secara signifikan.
PS: Volume data tumbuh, yang tidak terlalu cocok dalam contoh ini. Contohnya mungkin tidak sesuai. Bagaimanapun, itu mungkin artinya. )
―Scheme 2: Gunakan memori untuk efisiensi optimasi -
Praktik ini membutuhkan konsumsi memori. Atau apakah verifikasi bekerja ke depan (inisialisasi data dilakukan selama penyebaran sistem). Artinya: Ketika halaman dimuat, data hanya dipanggil ke metode publik yang disediakan untuk verifikasi.
// Kode Siswa untuk Array Indeks Kamus Pribadi <String, Int> _DicstudentCodetoArrayIndex; // Kode Kursus untuk Indeks Data Kamus Privat <String, Int> _DicCourSecodetoarrayIndex; // semua siswa Daftar <spinityEntity> ListStudent = service.findallStudent (); // semua siswa (StudentEntity> ListStudent = service.findallStudent (); // semua siswa (Studententity> ListStudent = Service.findallStudent (); Daftar Catatan Pilihan Kursus Siswa <Sahuk -SastraEnTity> ListStudentRecord = service.finall (); int private [,] _connstudentRecord = int baru [liststudent.count, listCourse.count]; // buat array siswa dan kursus untuk dengan cepat menemukan indeksis indeks privat void generatedic () {untuk () {for. _DicstudentCodetoArrayIndex.add (listStudent [i] .code, i)} untuk (int i = 0; i <listCourse.count; i ++) {_ DiccoursecodetoarrayIndex.Add (listCourse [i] .code, i)}}}}}}}}}}}}}}}}}}} 1 berarti bahwa siswa telah memilih kursus void private generArteArray () {foreach (studentrecordentity sre di liststudentrecord) {int x = _dicstudentCodetoArrayIndex [sre.studentCode]; int]; y = diccoursecodetoarrayIndex [sre.coursecode]; ConnstudentRecord [x, y] = 1;}} // Metode Buka: Permintaan apakah catatan pemilihan kursus ada berdasarkan kode siswa dan kode kursus /// <Returns> Return 1 berarti ada. Return 0 berarti tidak ada </eturns> public void verifyRecordByStudentCodeAndCourSecode (string pStudentCode, string pcoursecode) {int x = _dicstudentCodoarrayIndex [pstudentCode]; int y = _diccoursecodetoarroat ConnstudentRecord [x, y];}―Sertipel analisis Performa -
Menganalisis penampilan solusi kedua.
1. Ada banyak cara.
2. Ada banyak variabel yang digunakan.
Pertama -tama, saya harus membicarakannya. Tujuan dari optimasi ini adalah untuk meningkatkan fenomena lag (sejumlah besar data verifikasi) yang dihadapi siswa saat memilih kursus.
Dua skema di atas dianalisis secara terpisah:
Asumsikan bahwa siswa itu dan kursus adalah m
Solusi pertama:
Kompleksitas waktu mudah untuk menghitung solusi pertama dengan minimum O (NM)
Solusi kedua:
1. Ada banyak kode. Tetapi pengguna hanya menyediakan metode VerifyRecordByStudentCodeAndCourSecode.
2. Ada banyak variabel, karena solusi ini adalah menggunakan memori untuk meningkatkan efisiensi.
Proses eksekusi metode ini: 1. Gunakan kode dalam kamus untuk menemukan index2, dan menggunakan indeks untuk menanyakan array.
Pada langkah pertama, kueri di kamus menggunakan algoritma pencarian hash. Kompleksitas waktu adalah O (LGN) dan waktunya relatif cepat. Langkah kedua adalah bahwa kompleksitas waktu adalah O (1), karena array terus menerus. Indeks akan secara langsung mencari alamat yang sesuai.
Oleh karena itu, solusi kedua digunakan untuk verifikasi, dan kompleksitas waktu dari solusi kedua adalah O (LGN+LGM)
-Meringkaskan-
Melalui analisis di atas, dapat dilihat bahwa upaya memori dapat meningkatkan efisiensi eksekusi program. Di atas hanyalah sebuah contoh, dan kualitas optimasi tergantung pada struktur data yang digunakan.
Di atas adalah seluruh konten artikel ini tentang kode instance Struktur Data Optimasi Kinerja Java, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!